Definición de función
export const checkAuth = (accessToken) => { const url = 'https://example/user-profile'; console.log("We are in outer function"); fetch(url, { method: 'GET', headers: new Headers({ 'Authorization' : 'Bearer ' + accessToken, }) }).then(res => res.json()) .catch(function(error){ console.error('Error : ', error) }) .then((response) => { if(response.error != 'Unauthorized') { return true; } else{ return false; } }) }Función de llamada
var res=checkAuth(this.state.accessToken); En la variable res , obtuve undefined pero estoy pasando true . ¿Cómo puedo resolver el problema?
La función checkAuth no devuelve un valor de la función. Está devolviendo un valor de la cadena Promise, pero ese es el valor que debe devolver checkAuth . Simplemente puede devolver la Promesa que fetch las devoluciones.
export const checkAuth = (accessToken) => { const url = 'https://example/user-profile'; console.log("We are in outer function"); return fetch(url, { method: 'GET', headers: new Headers({ 'Authorization' : 'Bearer ' + accessToken, }) }).then(res => res.json()) .catch(function(error){ console.error('Error : ', error) }) .then((response) => { return response.error != 'Unauthorized' }); } Debido a que checkAuth ahora devuelve una Promesa, deberá llamarla en una función async y await a que la Promesa se resuelva, o encadenar desde la Promesa devuelta.
checkAuth(this.state.accessToken) .then(value => { // do something with value }) .catch(error => { // handle any Promise rejections if they occur });