node.js中,这三个的作用都是延时.
而node.js的基于事件循环的事件模型,循环执行一个类似while(true)的函数,每次循环成为一次tick,每次tick中从event loop中取出函数执行.
而process.nextTick是每次tick执行完后就会执行.而setTimeout(0)和setImmediate会放在队列的末尾,也就是说,当event loop中没有其他event才会执行.
而setImmediate却晚于setTimeout(0)执行,原因不明.
所以 顺序为:
process.nextTick -> setTimeout -> setImmediate