Mi pregunta es muy simple. Tengo una variable global, someVar , que inicialmente se establece en null . Entonces tengo una función como la siguiente:
someFunc: async function () { someVar = await someAsyncHelperThatReturnsABoolean(); var anotherVar = someVar; // call some function based on the state of anotherVar } Quiero asegurarme de que anotherVar no se establecerá en null debido al hecho de que someVar fue inicialmente null . En otras palabras, quiero asegurarme de que anotherVar esté configurado en un valor booleano adecuado que sea el tipo de respuesta de someAsyncHelperThatReturnsABoolean() .
Según tengo entendido, usar la palabra clave await significa que cualquier otra parte del código dentro de someFunc que usa someVar await (después de todo, la palabra clave es await) por la línea someVar = await someAsyncHelperThatReturnsABoolean(); para terminar correctamente y para que someVar se establezca realmente en un valor booleano adecuado. ¿Es eso correcto?
Si y no.
La palabra clave await dentro de una función async esperará a que se cumpla la Promesa dada, a menos que no sea una Promesa, en cuyo caso el valor se devuelve directamente. Si la Promesa fue rechazada, la palabra clave await arroja el valor rechazado. Si la Promesa se resolvió, devuelve el valor resuelto. Si eso es una Promesa, la esperará recursivamente. Tenga en cuenta que (además de esperar Promesas recursivamente) en realidad no hace/verifica nada con el valor. Si su someAsyncHelperThatReturnsABoolean finalmente se resuelve en null , aún terminará con null .
En una nota al margen: a menos que ya haya declarado e inicializado someVar antes, debe ser undefined , no null . También asegúrese de declarar someVar dentro de su función. Si es global, es posible que tenga otros problemas, aunque es poco probable. Pero las buenas prácticas de codificación son buenas para seguir de todos modos.