请问以下JS代码在Node环境下的输出顺序是?
请问以下JS代码在Node环境下的输出顺序是?
Promise.resolve()
.then(() => {
console.log('p1');
})
.then(() => {
console.log('p2');
})
process.nextTick(() => {
console.log('n1');
process.nextTick(() => {
console.log('n2');
})
})
n1、n2、p1、p2
注意虽然两者都属于微任务,但是只要它不是process.nextTick派发的,全部都要排队在process.nextTick后面执行。
Node 中的“微任务(microtasks)其实是一个统称,包含了两部分:
process.nextTick() 注册的回调 (nextTick task queue)
promise.then() 注册的回调 (promise task queue)
Node 在执行微任务时, 会优先执行 nextTick task queue 中的任务,执行完之后会接着执行 promise task queue 中的任务。
所以如果 process.nextTick 的回调与 promise.then 的回调都处于主线程或事件循环中的同一阶段, process.nextTick 的回调要优先于 promise.then 的回调执行。

浙公网安备 33010602011771号