Método Node.js Stream writeable.end()

El método writable.end() es una interfaz de programación de aplicaciones incorporada del módulo Stream para que ya no se puedan escribir más datos en Writable. Los argumentos chunk y encoding son opcionales, lo que permitirá que se escriba instantáneamente un nuevo fragmento final de datos antes de cerrar la transmisión. Además, la función de devolución de llamada opcional se agrega como un oyente para el evento ‘finalizar’ de la transmisión Writable.

Sintaxis:

writable.end( chunk, encoding, callback)

Parámetros: este método acepta tres parámetros, como se mencionó anteriormente y se describe a continuación:

  • chunk: Es un dato opcional para escribir. El valor de chunk debe ser una string, un búfer o Uint8Array. Para el modo de objeto, el valor del fragmento puede ser cualquier cosa que no sea nulo.
  • codificación: contiene el valor de codificación si el fragmento es un valor de string.
  • devolución de llamada: es una función de devolución de llamada opcional para la transmisión.

Valor devuelto: Devuelve los datos escritos antes de llamar a este método y si el método end() tiene una porción de datos nuevos, también se devuelve al final.

Los siguientes ejemplos ilustran el uso del método writable.end() en Node.js:

Ejemplo 1:

// Node.js program to demonstrate the     
// writable.end() method  
  
// INcluding stream module
const stream = require('stream');
  
// Creating a stream and creating 
// a write function
const writable = new stream.Writable({
  
  // Write function with its 
  // parameters
  write: function(chunk, encoding, next) {
  
    // Converting the chunk of
    // data to string
    console.log(chunk.toString());
    next();
  }
});
  
// Writing data
writable.write('hi');
  
// Calling end method with its 
// all the parameters
writable.end("last data", "utf8", () => {
     console.log("Writable stream ended!");
});

Producción:

hi
last data
Writable {
  _writableState:
   WritableState {
     objectMode: false,
     highWaterMark: 16384,
     finalCalled: false,
     needDrain: false,
     ending: true,
     ended: true,
     finished: false,
     destroyed: false,
     decodeStrings: true,
     defaultEncoding: 'utf8',
     length: 0,
     writing: false,
     corked: 0,
     sync: false,
     bufferProcessing: false,
     onwrite: [Function: bound onwrite],
     writecb: null,
     writelen: 0,
     bufferedRequest: null,
     lastBufferedRequest: null,
     pendingcb: 2,
     prefinished: true,
     errorEmitted: false,
     emitClose: true,
     autoDestroy: false,
     bufferedRequestCount: 0,
     corkedRequestsFree:
      { next: null,
        entry: null,
        finish: [Function: bound onCorkedFinish] } },
  writable: false,
  _write: [Function: write],
  domain: null,
  _events:
   [Object: null prototype] {
     finish: { [Function: bound onceWrapper] listener: [Function] } },
  _eventsCount: 1,
  _maxListeners: undefined }
Writable stream ended!

Ejemplo 2:

// Node.js program to demonstrate the     
// writable.end() method  
  
// INcluding stream module
const stream = require('stream');
  
// Creating a stream and creating 
// a write function
const writable = new stream.Writable({
  
  // Write function with its 
  // parameters
  write: function(chunk, encoding, next) {
  
    // Converting the chunk of
    // data to string
    console.log(chunk.toString());
    next();
  }
});
  
// Writing data
writable.write('hi');
  
// Calling end method with its 
// all the parameters
writable.end("last data", "utf8", () => {
     console.log("Writable stream ended!");
});
writable.write('GfG');

Producción:

hi
last data
Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at writeAfterEnd (_stream_writable.js:248:12)
    at Writable.write (_stream_writable.js:296:5)
    at /home/runner/LuxuriousLegitimateObservation/index.js:30:10
    at Script.runInContext (vm.js:133:20)
    at Object. (/run_dir/interp.js:156:20)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)Writab
le stream ended!

Aquí se muestra un error cuando se llama al método write() después del método end(), lo cual no es posible.

Referencia: https://nodejs.org/api/stream.html#stream_writable_end_chunk_encoding_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 *