node持续辨析(1)

(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('我是同步任务');
运行结果为
node持续辨析(1)_第1张图片
image.png
  • process.nextTick() 总是在执行栈(同步任务)的最后,也就是去任务队列取异步任务之前执行
  • setImmediate总是在任务队列的最后执行

node持续辨析(1)_第2张图片
image.png

自执行函数为同步任务


node持续辨析(1)_第3张图片
image.png
(2)nodejs在前端开发中的作用

(3)问题解决

  • 正确的程序莫名其妙报错,可能是node版本不够,需要升级。

你可能感兴趣的:(node持续辨析(1))