¿La función asíncrona en la función asíncrona no espera?
// onConfirmed executes after confirming on modal onConfirmed={async () => { const res = await submit(submitData) // post data and return some data if (!res.error) { const resFb= await Fb(data) console.log(resFb) // ***execute it before waiting "await Fb(data)" } else { // handle error } }} //Fb function export const Fb = async (data) => { const body = { method: 'share', href: 'https://hogehoge', display: 'popup', hashtag: '#hogehoge', quote: `content: ${data.content}`, } return FB.ui(body, async (res) => { if (res !== undefined && !res.error_code) { return await Api.put(body) // put to own server (executes here without problem) } else { return res } }) }Necesito obtener el valor adecuado de resFb que espera la función asíncrona.
FB.ui() no devuelve una promesa, por lo que la promesa devuelta por Fb() se resolverá de inmediato, y la devolución de llamada pasada a FB.ui aún se ejecutará más tarde...
Para devolver una promesa que solo se resuelve cuando se ejecuta esa devolución de llamada, prometa FB.ui :
export const Fb = (data) => { const body = { method: 'share', href: 'https://hogehoge', display: 'popup', hashtag: '#hogehoge', quote: `content: ${data.content}`, }; return new Promise(resolve => FB.ui(body, res => resolve(!res?.error_code ? Api.put(body) : res) ) ); }