Puedo marcar una función de JavaScript como "asíncrona" (es decir, devolver una promesa) con la palabra clave async . Me gusta esto:
async function foo() { // Do something }¿Cuál es la sintaxis equivalente para las funciones de flecha?
Las funciones de flecha asíncronas se ven así:
const foo = async () => { // do something }Las funciones de flecha asíncronas se ven así para un solo argumento que se le pasa:
const foo = async evt => { // do something with evt }Las funciones de flecha asíncronas se ven así para múltiples argumentos que se le pasan:
const foo = async (evt, callback) => { // do something with evt // return response with callback }El formulario anónimo también funciona:
const foo = async function() { // do something }Una declaración de función asíncrona se ve así:
async function foo() { // do something }Usando la función asíncrona en una devolución de llamada:
const foo = event.onCall(async () => { // do something })Usando el método asíncrono dentro de una clase :
async foo() { // do something }Esta es la forma más sencilla de asignar una expresión de función de flecha async a una variable con nombre :
const foo = async () => { // do something } (Tenga en cuenta que esto no es estrictamente equivalente a la async function foo() { } . Además de las diferencias entre la palabra clave de function y una expresión de flecha , la función en esta respuesta no está "arriba a la cima" .)
Función de flecha asíncrona invocada inmediatamente:
(async () => { console.log(await asyncFunction()); })();Expresión de función asíncrona invocada inmediatamente:
(async function () { console.log(await asyncFunction()); })();