Sto scrivendo un modulo, che è un flusso scrivibile. Voglio implementare l'interfaccia pipe per i miei utenti.Qual è un modo corretto per sospendere il flusso leggibile tramite pipe da quello scrivibile in nodejs?
Se si verifica un errore, è necessario mettere in pausa il flusso leggibile ed emettere un evento di errore. Quindi, l'utente deciderà, se ha problemi con l'errore, dovrebbe essere in grado di riprendere l'elaborazione dei dati.
var writeable = new BackPressureStream();
writeable.on('error', function(error){
console.log(error);
writeable.resume();
});
var readable = require('fs').createReadStream('somefile.txt');
readable.pipe.(writeable);
vedo quel nodo ci fornisce readable.pause()
metodo, che può essere utilizzato per mettere in pausa flusso leggibile. Ma io non riesco a come posso chiamare da mio modulo flusso scrivibile:
var Writable = require('stream').Writable;
function BackPressureStream(options) {
Writable.call(this, options);
}
require('util').inherits(BackPressureStream, Writable);
BackPressureStream.prototype._write = function(chunk, encoding, done) {
done();
};
BackPressureStream.prototype.resume = function() {
this.emit('drain');
}
Come contropressione può essere implementato in un flusso scrivibile?
P.S. È possibile utilizzare gli eventi pipe/unpipe
che forniscono un flusso leggibile come parametro. Ma si dice anche che, per i flussi convogliati, l'unica possibilità di mettere in pausa consiste nell'annullare lo stream leggibile da quello scrivibile.
Ho capito bene? Devo decomprimere il mio stream scrivibile finché le chiamate dell'utente non riprendono? E dopo che le chiamate dell'utente riprenderanno, dovrei reindirizzare lo stream leggibile?
interessati ad avviare una taglia per questo? –
ehi, hai trovato una risposta alla tua domanda? –