El documentation for write() dice:Node.js' y el evento de drenaje
devuelve false para indicar que el búfer del núcleo está lleno, y los datos serán enviados en el futuro.
y la documentación para el evento drain
dice:
Después de un método de escritura() devuelve false, este evento se emite para indicar que es seguro volver a escribir.
¿Qué significa eso? ¿Debo esperar al evento drain
antes de poder volver a escribir? ¿Qué pasó con los datos que traté de escribir? ¿Eso está perdido? ¿Qué sucede cuando llamo a escribir sin esperar el evento drain
?
¿Qué pasa si se llama 'process.exit()' 'mientras que el res.write' todavía se almacena temporalmente en la memoria de usuario (es decir, no se vació al buffer del kernel)? ¿La respuesta se pierde? – Emmett
@Emmett sí, si llama a 'process.exit()' mientras hay llamadas de escritura almacenadas que se van a enjuagar, entonces esos datos se perderán. – TooTallNate
No es completamente seguro "llamar a' write() 'sin preocuparse por el valor de retorno". Los [documentos actuales] (https://nodejs.org/dist/v8.4.0/docs/api/stream.html) dicen: _ "Mientras está permitido llamar a' write() 'en una secuencia que no está drenando, Node .js almacenará en búfer todos los fragmentos escritos hasta que se produzca el máximo uso de memoria, en cuyo punto se cancelará incondicionalmente. Incluso antes de que se anule, el uso de memoria alta provocará un mal rendimiento del recolector de basura y un alto RSS (que normalmente no se devuelve al sistema, incluso después de que ya no se requiera memoria). "_ También vea: https://stackoverflow.com/q/37579605 – TachyonVortex