Цикл событий в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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