node.js中的fs.createReadStream如何在内部工作

时间:2017-07-01 13:52:51

标签: javascript node.js

我无法理解fs.createReadStream在node.js中是如何工作的。

我有示例代码:

var fs = require('fs');


var stream = fs.createReadStream(__dirname + '/read.text');

stream.on('data', function(chunk){
    console.log('new chunk arrived');
    console.log(chunk);
    console.log('');
})

stream.on('close', function(){
    console.log('file closed')
})

stream.on('end', function(){
    console.log('stream ended')
})

stream.on('open', function(){
    console.log('File opened')
});

console.log('one');
console.log('two');

在此代码中,文件中的块何时开始流式传输?

当我们在线声明一个对象?

var stream = fs.createReadStream(__dirname + '/read.text');

在这条线上?

 stream.on('data', function(chunk){
    console.log('new chunk arrived');
    console.log(chunk);
    console.log('');
})

或执行整个代码时?

同步还是异步?

如果你逐行解释代码,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

javascript是完全异步的,

函数createReadStream按以下顺序调用事件,

  • open:您的文件存在且已打开
  • data:nodejs为每个块读取内容和调用数据事件(大小默认值:64kb)
  • 结束:所有数据都在流
  • 关闭:文件已关闭

var stream = fs.createReadStream(__dirname + '/read.text');

你创建一个流,是空的,但是获取数据的过程开始,suscribing event永远不会启动进程,