setTimeout/setImmediate/process.nextTick的区别

setTimeout

setTimeout(setTnterval和setTimeout区别为执行次数不同 ),将回调函数加入“任务队列”,等当前执行栈执行完,主线程才会执行任务队列中的回调函数

setTimeout(function(){
  console.log(1)
}, 10)
// 10ms 后将回调函数加入任务队列,而不是10ms后开始执行
// 设置为0,也会有4ms的延迟

setImmediate

setImmediate 也是将回调函数插入到任务队列的尾部
和setTimeout(fn,0)类似,但加入任务队列的速度比setTimeout快,没有4ms的延迟

setImmediate(function(){
  console.log(1)
})

process.nextTick

nodejs加入的方法,它是将回调函数加入到 当前执行栈的尾部,而不是任务队列的尾部

setTimeout(function C() {
    console.log(3');
}, 0)
process.nextTick(function A() {
    console.log(1);
    process.nextTick(function B(){console.log(2);});
});
// 1
// 2
// 3
``

你可能感兴趣的:(setTimeout/setImmediate/process.nextTick的区别)