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