Sobre la función Async en ES6

Dirección reimpresa: https://www.cnblogs.com/sghy/p/7987640.html

Definición : La función Async es una función de operación asincrónica, en esencia, la función Async es el azúcar sintáctico de la función Generator. asyncLa función es *reemplazar el asterisco ( ) de la función Generador con asyncel yieldreemplazo await, y nada más.

Método de definición y método de llamada :

prueba de función asíncrona () {
  const a = espera fn1 ();
  const b = espera fn2 (a);
}
prueba()

Se puede ver en lo anterior: la función asíncrona no necesita ser como la función Generador, necesita llamar al nextmétodo para ejecutar, y el método de llamada es el mismo que el método de llamada de función ordinaria

Explicación: a) asyncindica que hay una operación asincrónica en la función, awaitlo que indica que la expresión que sigue inmediatamente debe esperar el resultado

          b) El valor de retorno de la función asíncrona es Promesa

Devuelva el objeto de promesa :

prueba de función asíncrona (a, b) {
  const x = agregar (a, b);
  const y = sumar (1, x);
  volver y;
}

función add (x, y) {
  devolver x + y;
}

console.log (test (1,2)) // Devuelve el objeto de promesa
test (1,2) .then (value => {
  console.log (value) // 4 el objeto de promesa puede usar el método then () para obtener el resultado
})

 

Cambio de estado del objeto de promesa : awaitEl objeto de promesa detrás de todos los comandos internos ejecutará el cambio de estado, a menos returnque se encuentre una declaración o se arroje un error.

  • return: el estado cambia a pendiente y la función luego se cambia para resolver
función asíncrona f () {
  regresar 'hola mundo';
}

f (). luego (v => console.log (v))
// "Hola Mundo"
  • Lanzar un error: el estado cambia directamente para rechazar
Código de copia
asíncrono f () {
  aguarde agregar (1,2);
  lanzar un nuevo error ('Hubo un error');
}

función add (x, y) {(resolver, rechazar) => {
  resolver (x + y)
}}
F()
.then (v => console.log (v))
.catch (e => console.log (e)) // Si hay un error, el estado de captura será capturado por el método catch
Código de copia

comando wait : en circunstancias normales, awaitun objeto Promise sigue al comando. De lo contrario, se convertirá en un resolveobjeto Promesa inmediato.

función asíncrona f () {
  regreso espera 123;
}

f (). luego (v => console.log (v))
// 123

Manejo de errores : si la awaitoperación asíncrona posterior falla, es equivalente asyncal objeto Promesa devuelto por la función reject. La forma de evitar errores es colocarlo en un try...catchbloque de código.

Código de copia
función asíncrona main () {
  tratar {
    const val1 = aguardar firstStep ();
    const val2 = esperar segundo paso (val1);
    const val3 = esperar tercer paso (val1, val2);

    console.log ('Final:', val3);
  }
  atrapar (err) {
    console.error (err);
  }
}
Código de copia

Puntos de atención :

  • Es mejor poner el awaitcomando en el try...catchbloque de código
  • awaitOperaciones asincrónicas detrás de múltiples comandos, si no hay una relación secundaria, es mejor dejar que se activen al mismo tiempo.
Código de copia
// Escribiendo uno
let [foo, bar] = espera Promise.all ([getFoo (), getBar ()]);

// escribiendo dos
let fooPromise = getFoo ();
let barPromise = getBar ();
let foo = espera fooPromise;
let bar = wait barPromise;
Código de copia
  • awaitLos comandos solo se pueden usar en asyncfunciones. Si se usan en funciones ordinarias, se informará un error.

Supongo que te gusta

Origin www.cnblogs.com/520BigBear/p/12719968.html
Recomendado
Clasificación