Javascript 吞咽暂停和缓冲流
我有一个文件流,在某个时刻我需要暂停我的流,等待它完成并缓冲,然后继续 例如:Javascript 吞咽暂停和缓冲流,javascript,node.js,gulp,Javascript,Node.js,Gulp,我有一个文件流,在某个时刻我需要暂停我的流,等待它完成并缓冲,然后继续 例如: var eventStream = require('event-stream') gulp.task('test', () => { eventStream.readArray([1, 2, 3, 4, 5]) .pipe(gulpTap((data) => { console.log('d1:', data); })) .
var eventStream = require('event-stream')
gulp.task('test', () => {
eventStream.readArray([1, 2, 3, 4, 5])
.pipe(gulpTap((data) => {
console.log('d1:', data);
}))
.pipe(gulpTap((data) => {
console.log('d2:', data);
}))
.on('end', function () {
console.log('ended');
});
})
打印:d1 1
d2 1
d12
d2 2
d13
D23
结束 当我希望它像:
d1 1
d12
d13
d2 1
d2 2
d2 3
这里的原因是,我想从一个对象中的所有文件中收集一些数据,然后将其提供给其他对象,所以我需要在管链中间的某种同步:
,可以借助于<代码>穿透2>代码>,例如:const eventStream = require('event-stream');
const through = require('through2');
gulp.task('test', () => {
const input = [];
eventStream.readArray([1, 2, 3, 4, 5])
.pipe(through.obj((data, enc, done) => {
// Save data and remove from stream
input.push(data);
console.log('d1:', data);
return done();
}, function(done) {
// Return "buffered" data back to stream
input.forEach(this.push.bind(this));
return done();
}))
.pipe(through.obj((data, enc, done) => {
console.log('d2:', data);
return done(null, data);
}))
.on('end', function () {
console.log('ended');
});
});
现实生活中的例子: