tengo este codigo:
setTimeout(function timeout() { console.log('timeout'); }, 0); let p = new Promise(function(resolve, reject) { console.log('create promise'); resolve(); }); p.then(function(){ console.log('execute promise'); }); console.log('end');Obtengo esta orden cuando ejecuto el código:
Pregunta: ¿Por qué se ejecuta primero create promise ? Espero ejecutar first end , porque es el único código sincronizado, por lo que debe ejecutarse primero.
La devolución de llamada que se pasa al constructor de Promise se ejecuta inmediatamente y sincrónicamente . Pero es posible iniciar una tarea asíncrona en una devolución de llamada de Promise . Luego, Promise se resuelve después de que se haya completado la tarea asincrónica . Este es el caso de uso principal de Promises .
En su caso, no se inició ninguna tarea asincrónica , por lo que todo su cody es sincrónico .