Open mishe opened 8 years ago
在nodeJS中,有3个开启定时器的函数,分别是setTimeout, setInterval, setImmediate; 在加上noTickde的process.nextTick,一共提供了4种异步执行代码的方式,有什么区别呢? 执行顺序 首先通过代码来分析
在nodeJS中,有3个开启定时器的函数,分别是setTimeout, setInterval, setImmediate; 在加上noTickde的process.nextTick,一共提供了4种异步执行代码的方式,有什么区别呢?
setTimeout(function(){ console.log('setTimeout 1') }) process.nextTick(function(){ console.log("nextTick延迟执行2"); }); process.nextTick(function(){ console.log("nextTick延迟执行1"); }); setImmediate(function(){ console.log("setImmediate延迟执行2"); }); //加入两个setImmediate()回调函数 setImmediate(function(){ console.log("setImmediate延迟执行1"); process.nextTick(function(){ console.log("强势插入"); }); }); process.nextTick(function(){ console.log("nextTick延迟执行3"); }); process.nextTick(function(){ console.log("nextTick延迟执行4"); }); setTimeout(function(){ console.log('setTimeout 2') }) var count=1, interval=setInterval(function(){ if(count<5) { count++; console.log('setInterval ') }else { clearInterval(interval) } }) console.log("正常执行");
正常执行 nextTick延迟执行2 nextTick延迟执行1 nextTick延迟执行3 nextTick延迟执行4 setTimeout 1 setTimeout 2 setInterval setImmediate延迟执行2 setImmediate延迟执行1 强势插入 setInterval setInterval setInterval
然后通过修改相应代码的位置,可以得出如下结果:
最终的执行结果
然后通过修改相应代码的位置,可以得出如下结果: