(1)process.nextTick()与setImmediate(fn);
process.nextTick方法可以在当前"执行栈"的尾部----下一次Event Loop(主线程读取"任务队列")之前----触发回调函数。也就是说,它指定的任务总是发生在所有异步任务之前。setImmediate方法则是在当前"任务队列"的尾部添加事件,也就是说,它指定的任务总是在下一次Event Loop时执行,这与setTimeout(fn, 0)很像
const process = require('process');
setImmediate(()=>{
console.log('------------------------------------');
console.log('setImmediateA');
console.log('------------------------------------');
setImmediate(()=>{
console.log('------------------------------------');
console.log('setImmediateB');
console.log('------------------------------------');
})
})
setTimeout(()=>{
console.log('------------------------------------');
console.log('setTimeout');
console.log('------------------------------------');
},0);
process.nextTick(()=>{
console.log('process.nextTick');
});
console.log('我是同步任务');
运行结果为
- process.nextTick() 总是在执行栈(同步任务)的最后,也就是去任务队列取异步任务之前执行
- setImmediate总是在任务队列的最后执行
自执行函数为同步任务
(2)nodejs在前端开发中的作用
(3)问题解决
- 正确的程序莫名其妙报错,可能是node版本不够,需要升级。