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

image.png

自执行函数为同步任务


image.png
(2)nodejs在前端开发中的作用

(3)问题解决

  • 正确的程序莫名其妙报错,可能是node版本不够,需要升级。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容