Estoy tratando de devolver una promesa es un archivo javascript. Sin embargo, hay un problema extraño. Entonces, cuando registro en la consola el valor devuelto dentro de la función, muestra lo siguiente:
const id = getAccounts() .then(res => res.find(acc => acc.type === ACCOUNT_TYPES.STARTER)) .then((res) => { return res.id }); console.log(id.then(res => res))¿Hay algo que me estoy perdiendo? He estado lidiando con esto e investigando durante todo el día. Si alguien puede ayudar, ¡lo agradecería mucho!
Sección actualizada:
const initialState = { currentAccountId: id.then((res) => { return res; }) || '' };El valor de retorno de llamar a .then de una Promesa es siempre otra Promesa. Al establecer currentAccountId en id.then , siempre será una Promesa.
Debe llamar a this.setState desde dentro de la función de resolución de Promise:
componentDidMount() { getAccounts() .then(res => res.find(acc => acc.type === ACCOUNT_TYPES.STARTER)) .then((res) => { this.setState({ currentAccountId: res }); }); } UsecomponentDidMount , como sugieren los documentos de React, para iniciar una solicitud asíncrona. "Si necesita cargar datos desde un punto final remoto, este es un buen lugar para instanciar la solicitud de red".
respuesta original
id.then siempre devolverá una nueva Promesa, y eso es lo que está registrando. Para registrar el valor real, puede mover el console.log dentro de la función de resolución:
id.then(res => console.log(res))