Método Node.js Stream.pipeline()

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *