2017-03-18 3 views
0

Je suis un ruisseau de la mise en œuvre inscriptibles et l'utiliser comme ceci:Node.js: la mise en œuvre d'un cours d'eau qui ne tient pas compte « fin »

const consumer = new MyStream() // stream which I implementing 

// producer1 and producer2 are just instances of any Readable stream 
producer1.pipe(consumer, {end: false}) 
producer2.pipe(consumer, {end: false}) 

La partie répétitive ici est {end: false}. Y at-il un moyen de configurer l'écriture pour ignorer l'événement «fin» du producteur? process.stderr et le travail process.stdout comme celui-ci

+0

Implémentez-vous MyStream ou le producteur? Si vous implémentez MyStream, vous implémentez un flux Duplex, pas seulement un flux Writable. – idbehold

+0

a ajouté quelques commentaires au code. En bref: j'implémente MyStream() Comment l'implémentation de la résolution de flux recto-verso peut-elle résoudre mon problème? – kharandziuk

Répondre

0

Comme les données ne sont pas générés à la demande, utiliser write, mais ajouter écouteur pour l'événement drain.

public writeStream(readableStream, cb) { 
    if (!this.write(readableStream.read()) { 
     this.once('drain',() => { 
      console.log("Wait for drain event"); 
      cb(); 
     }); 
    else { 
     process.nextTick(cb); 
    } 
    return this; 
}