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
``