Estoy trabajando en un marco que requiere que la función principal devuelva true o false . Dentro de esa función, me gustaría ejecutar una operación asíncrona.
¿Cómo hago que la función principal devuelva true o false después de una acción asíncrona?
Ejemplo de lo que no funciona:
function parent() { const child = new Promise(); child.then( function (success) { return true }, ) }El problema es que regresar es feliz dentro del contexto de la función child.then().
Esto requiere necesariamente que la función principal también sea asíncrona, a menos que desee bloquear el hilo principal, lo que se consideraría un antipatrón.
Hacer esto:
const parent = async () => { const childResponse = await child(); if (childResponse === "something") { return true; } else { return false; } };No hagas esto:
const parent = () => { let promiseResult, parentReturnValue; child.then(result => { promiseResult = result; if (promiseResult === "something") { parentReturnValue = true; } else { parentReturnValue = false; } }); while (promiseResult === undefined) { // block the main thread } return parentReturnValue; };