He estado ejecutando código diferente que escribí para observar el comportamiento de async ... await palabras clave.
Tengo dos ejemplos, que se comportan de manera drásticamente diferente:
Ejemplo 1:
const func1 = async () => { await setTimeout(() => console.log('first'), 0); console.log('second') console.log('third') } console.log('hi1'); func1(); console.log('hi2'); // logs hi1, hi2, second, third, firstEjemplo2:
const func2 = async () => { await console.log('first'); console.log('second'); console.log('third'); } console.log('hi1'); func2(); console.log('hi2'); // logs hi1, second, third, hi2, firstEntiendo todo en el Ejemplo 1, pero no en el Ejemplo 2. Específicamente, espero que el Ejemplo 2 registre
'hi1', 'first', 'second', 'third', 'hi2' Esto se debe a que no hay nada que esperar al iniciar sesión 'first' , por lo que debe iniciar sesión inmediatamente 'first' , ya que Javascript es un lenguaje síncrono.
Entonces, en resumen, tengo curiosidad por estas dos cosas:
¿Por qué el Ejemplo 2 registra tal como está en lugar de registrar 'hi1', 'first', 'second', 'third', 'hi2' .
¿Puedo usar async ...await en código no asíncrono como console.log('first') ? Entonces, ¿no debería devolver un error? No lo hace, por lo tanto, supongo que es utilizable.
¡Cualquier explicación sería apreciada!