v6.4.0 新增
来自 npm 模块 event-stream,如需使用,请用
1const es = require("event-stream");
该模块用于便捷的创建流,完整说明见项目主页 可读流:
1es.readable(function (count, callback) {
2 if (streamHasEnded) return this.emit("end");
3
4 //...
5
6 this.emit("data", data); //use this way to emit multiple chunks per call.
7
8 callback(); // you MUST always call the callback eventually.
9 // the function will not be called again until you do this.
10});
转换流:
1var es = require("event-stream");
2es.map(function (data, callback) {
3 //transform data
4 // ...
5 callback(null, data);
6});
可写流:
var es = require('event-stream')
es.map(function (data, callback) {
// ...
callback(null, null)
})
例子:
1const es = require("event-stream");
2
3//创建一个可读流
4let e = 0;
5let r = es.readable(function (count, callback) {
6 if (e > 10) return this.emit("end");
7 this.emit("data", String(e));
8 e++;
9 return callback();
10});
11//转换流
12let map = es.map(function (data, callback) {
13 data = `--${data}--`;
14 callback(null, data);
15});
16
17//可写流,这里是将数据打印出来
18let w = es.map(function (data, callback) {
19 log(data);
20 callback(null, null);
21});
22
23w.on("close", () => {
24 log("操作完成");
25});
26
27r.pipe(map).pipe(w); //将3个流连起来
例子 2(配合 io 流使用):
1const es = require("event-stream");
2const stream = require("stream");
3
4let r = stream.createFileReadStream("/sdcard/文本文件.txt");
5
6//可写流,这里是将数据打印出来
7let w = es.map(function (data, callback) {
8 log(data);
9 callback(null, null);
10});
11
12//连通流,其中es.split()是一个流,负责将数据按行输出
13r.pipe(es.split()).pipe(w);