请问以下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 的回调执行。
https://www.cnblogs.com/forcheng/p/12723854.html
标签:Node,nextTick,顺序,console,log,process,JS,promise From: https://www.cnblogs.com/longmo666/p/17824445.html