No puedo entender por qué funcionar en los new Promise inmediatamente. ¿No debería colocarse en Microtask queue y dispararse después de que se haya ejecutado todo el código global?
Código:
const prom = new Promise((resolve, reject) => { console.log("in Promise"); resolve(20); }); prom.then((data) => { console.log(12312323); console.log(data); }); console.log(77);Enlace al código
Producción:
in Promise 77 12312323 20Cuando construyes una Promesa, su tarea comienza a ejecutarse inmediatamente.
const p = new Promise((resolve) => { console.log('in promise'); resolve("value"); })Las promesas son principalmente útiles para tareas asincrónicas como solicitudes de red, y su resolución retrasada puede hacer que parezca que la ejecución en sí se ha aplazado, pero eso no es lo que está sucediendo.
En este ejemplo, puede ver que puede haber un retraso significativo entre el inicio de la tarea y el momento en que se resuelve la promesa:
const p = new Promise((resolve) => { console.log('first: in promise'); // first setTimeout(() => resolve('resolved value'), 2000) // wait 2 seconds before resolving. }) p.then(val => console.log(`third: ${val}`)); // third console.log("second: after p.then"); // second