Si usa la sintaxis then() de la promesa, realmente puede ejecutar códigos al mismo tiempo.
Vea este ejemplo.
async function asyncFunc() { return '2'; } console.log('1') asyncFunc().then(result => console.log(result)) console.log('3') esto imprime 1 -> 3 -> 2 porque asyncFunction() se ejecuta en "async" y el resto del código ( '3' ) se ejecuta sin demora.
Pero si usa la sintaxis async / await , ¿no funciona como un código de "sincronización" común y corriente?
async function asyncFunc() { return '2'; } console.log('1') const result = await asyncFunc() console.log(result) console.log('3') esto imprimiría 1 -> 2 -> 3 porque "difiere" el resto del código para "esperar" asyncFunction()
Así que tengo curiosidad sobre el propósito de la sintaxis async / await . Supongo que te permite usar funciones asíncronas como la función de sincronización. Con async / await , puedo ver fácilmente cómo se ejecuta mi código porque tiene el mismo flujo que el código de sincronización simple. Pero entonces, ¿por qué no usar el código de sincronización en primer lugar?
Pero estoy seguro de que me estoy perdiendo algo aquí, ¿verdad? ¿Cuál es el propósito de la sintaxis async / await ?
La idea de async/await es la siguiente:
Es un azúcar sintáctico para las promesas. Permite usar código asíncrono (como Web Api's - AJAX, DOM api's, etc.) en orden síncrono.
Usted pregunta "Pero entonces, ¿por qué no usar el código de sincronización en primer lugar?" - porque en su ejemplo forzó que se devolviera un código de sincronización en una promesa, básicamente lo hizo asíncrono, pero podría ejecutarse como sincronización en primer lugar, pero hay API web como se mencionó anteriormente, que funcionan SOLO ASYNC (lo que significa que usted tienes que esperar a que se ejecuten), es por eso que no puedes sincronizarlos "en primer lugar" :)
Cuando JavaScript encuentra la expresión await, detiene la ejecución de la función asíncrona y espera hasta que se cumple la promesa (la promesa se resolvió con éxito) o se rechaza (se produjo un error), luego continúa la ejecución donde se detiene en esa función... La promesa puede ser un código del motor JS (como en su caso) o puede ser de otro lugar como navegador apis (verdaderamente asíncrono).