gpt4 book ai didi

javascript - gulp 暂停和缓冲流

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:57 25 4
gpt4 key购买 nike

我有一个文件流,在某些时候我需要暂停我的流,等到它完成并缓冲,然后继续。

示例:

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
d1 2
d2 2
d1 3
d2 3
结束

当我希望它像:
d1 1
d1 2
d1 3
d2 1
d2 2
d2 3

这里的原因是我想从一个对象中的所有文件收集一些数据,然后将其提供给其他对象,所以我需要在管道链中间进行某种同步

最佳答案

您可以在 through2 的帮助下完成此操作,例如:

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

现实生活中的例子:https://github.com/sirlantis/gulp-order

关于javascript - gulp 暂停和缓冲流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32460937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com