El método stream.pipeline() es un método de módulo que se usa en la canalización al vincular las transmisiones que transmiten errores y limpiar con precisión y proporcionar una función de devolución de llamada cuando finaliza la canalización.
Sintaxis:
stream.pipeline(...streams, callback)
Parámetros: este método acepta dos parámetros, como se mencionó anteriormente y se describe a continuación.
- …flujos: Estos son dos o más flujos que deben ser canalizados juntos.
- devolución de llamada: esta función se llama cuando la canalización está completa y muestra un ‘error’ si la canalización no se completa.
Valor devuelto: Devuelve una función de limpieza.
Los siguientes ejemplos ilustran el uso del método stream.pipeline() en Node.js:
Ejemplo 1:
// Node.js program to demonstrate the // stream.pipeline() method // Including fs and zlib module var fs = require('fs'); const zlib = require('zlib'); // Constructing finished from stream const { pipeline } = require('stream'); // Constructing promisify from // util const { promisify } = require('util'); // Defining pipelineAsync method const pipelineAsync = promisify(pipeline); // Constructing readable stream const readable = fs.createReadStream("input.text"); // Constructing writable stream var writable = fs.createWriteStream("output.text"); // Creating transform stream const transform = zlib.createGzip(); // Async function (async function run() { try{ // pipelining three streams await pipelineAsync( readable, transform, writable ); console.log("pipeline accomplished."); } // Shows error catch(err) { console.error('pipeline failed with error:', err); } })();
Producción:
Promise { } pipeline accomplished.
Ejemplo 2:
// Node.js program to demonstrate the // stream.pipeline() method // Including fs and zlib module var fs = require('fs'); const zlib = require('zlib'); // Constructing finished from stream const { pipeline } = require('stream'); // Constructing promisify from // util const { promisify } = require('util'); // Defining pipelineAsync method const pipelineAsync = promisify(pipeline); // Constructing readable stream const readable = fs.createReadStream("input.text"); // Constructing writable stream var writable = fs.createWriteStream("output.text"); // Creating transform stream const transform = zlib.createGzip(); // Async function (async function run() { try{ // pipelining three streams await pipelineAsync( readable, writable, transform ); console.log("pipeline accomplished."); } // Shows error catch(err) { console.error('pipeline failed with error:', err); } })();
Salida: aquí, el orden de los flujos no es el correcto durante la canalización, por lo que se produce un error.
Promise { } pipeline failed with error: Error [ERR_STREAM_CANNOT_PIPE]: Cannot pipe, not readable at WriteStream.Writable.pipe (_stream_writable.js:243:24) at pipe (internal/streams/pipeline.js:57:15) at Array.reduce () at pipeline (internal/streams/pipeline.js:88:18) at Promise (internal/util.js:274:30) at new Promise () at pipeline (internal/util.js:273:12) at run (/home/runner/ThirstyTimelyKey/index.js:33:11) at /home/runner/ThirstyTimelyKey/index.js:45:5 at Script.runInContext (vm.js:133:20)
Referencia: https://nodejs.org/api/stream.html#stream_stream_pipeline_streams_callback .
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA