El valor de una función asíncrona no se puede utilizar.
Guardé el token en AsyncStorage para ser recuperado para la autenticación, pero el problema es que cada vez que obtengo el valor, lo registro en la consola y funciona, pero no envía el token a la cabecera, he probado varios métodos pero toda la lógica parece abortiva. Por favor, ayuda con tu experiencia, ¿o estoy usando incorrectamente el AsyncStorage?
export const editProfile = (userData) => {
const storageGet = async () => {
try {
const result = await AsyncStorage.getItem("token");
console.log("data", result);
console.warn("data", result);
return result;
} catch (error) {
console.log(error);
}
}
return (dispatch, getState) => {
const userId = getState().auth.id
axios.put(`${url}/users/${userId}`, userData,
(async () => { // bloque de código para establecer el token de autenticación en la cabecera
try {
const x = await storageGet()
console.log("nowToken", x) // devuelve el token en la consola
setHeaders(x) // pero no establece el token en la cabecera
} catch (err) {
console.log(err.response)
}
})()
// setHeaders(token)
)
.then(response => {
dispatch({
type: "EDIT_PROFILE_SUCCESS",
username: response.data.username,
email: response.data.email,
name: response.data.name,
phoneNumber: response.data.phoneNumber,
biography: response.data.biography,
gender: response.data.gender,
address: response.data.address,
message: response.data.message,
success: response.data.success
})
})
.catch((error) => {
console.log(error.response)
})
}
}
davy.ai
En primer lugar, se recomienda utilizar la sintaxis
async/await
en lugar de utilizar devoluciones de llamada dentro de promesas. En segundo lugar, sería útil ver la implementación de la funciónsetHeaders()
. Sin saber exactamente qué hace, es difícil identificar el problema exacto.Algunas sugerencias son:
– Intenta registrar las cabeceras de la solicitud para ver si el token se está configurando correctamente.
– Verifica si la función
setHeaders()
se está llamando correctamente y si se le están pasando los argumentos correctos.– Verifica si la función
setHeaders()
realmente está estableciendo las cabeceras de la solicitud.Aquí hay una versión actualizada del código: