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