Header Ads Widget

Ticker

6/recent/ticker-posts

Ejemplo de espera de nivel superior de JavaScript / nodo

 Antes de que espere el nuevo nivel superior, solo puede esperar un fragmento de código dentro de una función (flecha) que se define con la asyncpalabra clave. Esto también significa que no puede hacer uso de la palabra clave await en el nivel superior de su código sin definir primero una función.

La espera de nivel superior permite a los desarrolladores esperar módulos al igual que las funciones asíncronas.

v8 ha agregado soporte para los módulos ES de espera de nivel superior.

Esta es una nueva propuesta de ECMAScript, que ha alcanzado la etapa 3.

Nota: TypeScript 3.8 agregó soporte para esta función para que pueda usarla sin esperar la próxima versión de JavaScript.

Los módulos ES son fragmentos de código reutilizables síncronos dentro de archivos JavaScript que tienen palabras clave de importación y exportación. Esto tiene algunos inconvenientes, por ejemplo, ¿qué sucede si necesita llamar a un módulo que depende de alguna operación asincrónica?

El await de nivel superior le permite utilizar la palabra clave await fuera de las funciones asíncronas.

Gracias a la espera de nivel superior, puede esperar recursos en los módulos ECMAScript. Es decir, otros módulos que los importan.

La espera de nivel superior solo se puede utilizar en el nivel superior de módulos. No hay soporte para scripts regulares o funciones no asíncronas.

Actualmente necesitamos usar la awaitsintaxis dentro de las funciones asíncronas. Esto significa que si queremos usarlo en el nivel superior sin definir explícitamente una función, necesitamos definir una expresión de función invocada inmediatamente de la siguiente manera:

(async () => {
  await /* ... */
})()

También puede definir una función de flecha antes de llamarla:

const myAsyncFunc = async () => {
  await /* ... */
}

myAsyncFunc()

Gracias a la función de espera de nivel superior, podrá ejecutar código con espera en el nivel superior sin envolverlo con ninguna función:

await FunctionReturningPromise(/* ... */)

Consulte también estos recursos:

Publicar un comentario

0 Comentarios