Discuss / JavaScript / process.nextTick()将在下一轮事件循环中调用?

process.nextTick()将在下一轮事件循环中调用?

Topic source
// test.js

// process.nextTick()将在下一轮事件循环中调用:
process.nextTick(function () {
    console.log('nextTick callback!');
});
console.log('nextTick was set!');
// process.nextTick()将在下一轮事件循环中调用:

我在网上搜到一个关于事件循环的教程,作者在文中说:

事件循环的顺序,决定了JavaScript代码的执行顺序。它从script(整体代码)开始第一次循环。之后全局上下文进入函数调用栈。直到调用栈清空(只剩全局),然后执行所有的micro-task。当所有可执行的micro-task执行完毕之后。循环再次从macro-task开始,找到其中一个任务队列执行完毕,然后再执行所有的micro-task,这样一直循环下去。

process.nextTick是一个微任务分发器,它会将任务分发到对应的微任务队列中去。 

如果是这样的话,process.nextTick()里的函数事件循环的第一轮就会被执行。但是和廖师傅所说的‘在下一轮循环中会调用’不一致,这是咋回事?

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

现在有AI助教了,我帮你把问题简化下,你可以问问:

下面的代码先输出A还是先输出B?为什么?

process.nextTick(function () { console.log('A'); });

console.log('B');


  • 1

Reply