Следующий код:
process.nextTick( () => console.log("nextTick 1") );
process.nextTick( () => { console.log("nextTick 2"); Promise.resolve("Resolved promise inside nextTick").then(console.log); })
Promise.resolve("Resolved promise 1").then(console.log);
Promise.reject("Rejected promise 2").catch(console.log);
setImmediate( () => {
console.log("setImmediate");
Promise.resolve("Resolved promise inside setImmediate").then(console.log);
Promise.reject("Rejected promise inside setImmediate").catch(console.log);
process.nextTick( () => console.log("nextTick 3") );
})
выводит это в узле v14.17.0
Resolved promise 1
Rejected promise 2
nextTick 1
nextTick 2
Resolved promise inside nextTick
setImmediate
nextTick 3
Resolved promise inside setImmediate
Rejected promise inside setImmediate
Почему первые два обратных вызова Promise.then/catch вызываются перед обратными вызовами process.nextTick? Не должны ли обратные вызовы process.nextTick предшествовать обратным вызовам Promise, как в части setImmediate?
nextTick 3
должен идти после обработчиков обещаний, которые запланированы из обратного вызоваsetImmediate
- person Bergi   schedule 12.06.2021nextTick
иsetImmediate
? и setImmediate против nextTick. Я подозреваю, что это как-то объясняется в nodejs.org/en/ docs/guides/event-loop-timers-and-nexttick — или это ошибка. - person Bergi   schedule 12.06.2021