有关Node.js异步代码执行时机的问题

nodejs和浏览器端的js其实都有一个事件循环,从这个简单的例子来分析
var fs = require(‘fs’);
fs.readFile(’/etc/passwd’, (err, data) => {
if (err) throw err;
console.log(data);
});执行fs.readFile,node一共完成两个操作,
1.启动os层的read操作,
2.往node的事件循环中注册一个read操作完成时的回调。
之后虽然主程序执行完,但是事件循环中还有回调,因此程序并不退出,而是等待,接下来操作系统的read操作完成,把事件放入node的事件队列,通知node,node调用回调函数,输出读取的内容

对于下面这段代码
有关Node.js异步代码执行时机的问题
执行的流程是fs.createReadStream启动os的read,注册了一个stream的回调执行了一个耗时的操作耗时操作执行过程中,read操作完成,事件进入node事件队列耗时操作完成,把data与end的事件处理函数放到stream回调里面node处理事件队列里面的事件,调用stream的回调处理,stream调用data与end的处理函数

|
|
|
|
|
|
|
|
|

多频