2016-03-20 4 views
1

Ich habe eine Funktion, um ein mehr Streams Rückkehr:Node.js. Wie man mehrere Ströme (Reihe oder Kette) in Rohr übergibt?

// function 
var s1 = through.obj({highWaterMark: 2}, function(data, enc, next) { 
    console.log("A: "+data); 
    next(null, "A"); 
}); 

var s2 = through.obj({highWaterMark: 2}, function(data, enc, next) { 
    console.log("B: "+data); 
    next(null, "B"); 
}); 

return [s1, s2]; 
// or chain: 
// s1.pipe(s2); 
// return s1; 

ich das Ergebnis der Funktion in der Leitung übergeben mag:

gulp.src(...).pipe(...).pipe(getStreams()).pipe(gulp.dest...); 

Gibt es solche Art und Weise zu tun?

Oder vielleicht kann ich es etwas wie das nächste tun?

var s1 = getStreams(); 
gulp.src(...).pipe(...).pipe(s1) 
s1.getLastStreamOfChain().pipe(gulp.dest...); 

Antwort

0

Sie können das merge-stream Modul:

const mergeStream = require('merge-stream'); 
gulp.src(...).pipe(...).pipe(mergeStream(s1, s2)).pipe(gulp.dest...); 
+0

merge-Stream funktioniert nicht. Ich denke es ist nur für nicht obj stream. – wishmaster35

+0

Sie können Merge-Stream auch für Obj-Streams verwenden. Ich glaube, ich habe dein Problem falsch verstanden. Du würdest gerne so pipen: 'src.pipe (getStreams()). Pipe (dest)', wobei getStreams() eine Kette von Streams zurückliefern würde, richtig? – lxe

+0

getStreams() muss einige Streams zurückgeben. Immerhin wird es eine Kette oder ein anderer Weg sein. Siehe mein Beispiel: http://plnkr.co/edit/ufSKTaUh7fWkzuJhFrQU?p=catalogue – wishmaster35

Verwandte Themen