event-stream

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);