节点事件发射器

我是新来的节点,我正在研究事件发射器,我创build了一个演示程序

var eventEmitter = new event.EventEmitter(); var fs = require("fs"); var data = ''; var read = fs.createReadStream("demo.txt"); read.setEncoding('UTF8'); read.on('data', function(resp) { console.log(resp); }); data='some data'; var writeStream = fs.createWriteStream("demo.txt"); writeStream.write(data,'UTF8'); writeStream.end(); writeStream.on('finish',function(){ console.log("finish"); }); 

所以输出是“完成”,但如果我在写入stream之后写入读取stream,输出是“完成一些数据”,那么为什么读取stream如果我先把它输出就不会产生输出。

PS:我已经在文件中有数据

正如@ jfriend00正确提到的,你应该先写文件,然后你可以阅读它。

 const fs = require("fs"); var writeStream = fs.createWriteStream("demo.txt"); writeStream.write('some data','UTF8'); writeStream.end(); writeStream.on('finish',function(){ console.log("finish"); let data = ''; const read = fs.createReadStream("demo.txt", {encoding: 'UTF8'}); read.on('data', function(resp) { console.log(resp); data += resp; }); }); 

所以,这里有几点:

  • 在这个例子中你并没有真正使用事件发射器
  • 你可以直接在createReadStream方法中设置编码