Javascript 合并流节点
此函数的返回必须是流。在非观看模式下,这很容易;只是返回重新处理,browserify流被转换,诸如此类,好的。但是,在监视模式下,每次更新都会运行rebundle,每次都会创建一个新流。我需要一种方法来整合所有这些流,因为它们被创建成一个单一的无止境的流,我可以返回,实际上可以消耗下来。使用组合流时,似乎一旦读取了数据,流就不再是可写的,所以这是不可能的。任何帮助都将不胜感激Javascript 合并流节点,javascript,node.js,stream,browserify,watchify,Javascript,Node.js,Stream,Browserify,Watchify,此函数的返回必须是流。在非观看模式下,这很容易;只是返回重新处理,browserify流被转换,诸如此类,好的。但是,在监视模式下,每次更新都会运行rebundle,每次都会创建一个新流。我需要一种方法来整合所有这些流,因为它们被创建成一个单一的无止境的流,我可以返回,实际上可以消耗下来。使用组合流时,似乎一旦读取了数据,流就不再是可写的,所以这是不可能的。任何帮助都将不胜感激 var bundleify = function(watch) { var bundler = (watch
var bundleify = function(watch) {
var bundler = (watch?watchify:browserify)('main.js');
var rebundle = function () {
return bundler.bundle()
.on('error', console.log)
.pipe(source('main.js'))
.pipe(rename('app.js'))
.pipe(jsTasks()); // lazypipe with other tasks
};
// Regular browserify, just return the stream.
if (!watch) {
return rebundle();
}
// Watchify, rebundle on update.
bundler.on('update', function() {
rebundle();
});
// return ????
}
这是我想出的解决办法。这是一个相当贫民区(不可否认,我对溪流没有太多的了解),但它看起来很有效。仍然有兴趣找到更好的方法
var outstream = through2.obj();
var interceptor = function(){
return through2.obj(function(obj, enc, cb) {
outstream.push(obj);
cb()
});
}
bundler.on('update', function() {
rebundle().pipe(interceptor());
});
rebundle().pipe(interceptor());
return outstream;
我不知道你想完成什么。您是否正在尝试将一组流连接起来,使它们被视为字符串(其中一个流完全是第一个流,然后是下一个流,然后是下一个流)?或者你正在尝试交错他们的数据?