Цикл событий в Node JS для обещанийJavascript

Форум по Javascript
Anonymous
Цикл событий в Node JS для обещаний

Сообщение Anonymous »

Я рассмотрел цикл событий в JavaScript и то, как он заставляет JS выполнять асинхронные операции, несмотря на то, что это однопоточный язык. Благодаря этому я узнал, что микрозадачи илиprocess.nextTick запускаются всякий раз, когда стек вызовов пуст, а также между каждым этапом.

Код: Выделить всё

const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('first timeout');
resolve('1');
},1000);
console.log('2');
setTimeout(() => {
console.log('3');
},1000);
});
myPromise.then((value) => {
console.log("First then received:", value);
setTimeout(() => {
console.log('5');
},0);
}).catch((error) => {
console.log("Caught in catch:", error);
});

В приведенном выше коде я ожидал, что результат будет

Код: Выделить всё

2
first timeout
First then received: 1
3
5
потому что функция setTimeout-5 будет помещена в очередь макрозадач после setTimeout-3, потому что «только разрешающим объектом будет mictoTask», а микрозадачи будут выполняться после выполнения синхронного кода.
потому что функция setTimeout-5 будет помещена в очередь макрозадач после setTimeout-3.
p>
но результат, когда я пытаюсь запустить узел версии 23,

Код: Выделить всё

2
first timeout
First then received: 1
5
3

Есть ли в моем понимании ошибка? где я пропал?

Подробнее здесь: https://stackoverflow.com/questions/793 ... r-promises

Вернуться в «Javascript»