Il documentation for write() dice:Node.js' e l'evento di scarico
restituisce false per indicare che il buffer del kernel è pieno, ei dati saranno inviati in futuro.
e la documentazione per l'evento drain
dice:
Dopo un metodo write() restituito false, questo evento viene emesso per indicare che è sicuro di scrivere di nuovo.
Che cosa significa? Devo aspettare l'evento drain
prima di poter scrivere di nuovo? Cosa è successo ai dati che ho provato a scrivere? È perduto? Cosa succede quando chiamo la scrittura senza attendere l'evento drain
?
Che cosa succede se si chiama 'process.exit()', mentre il 'res.write' è ancora tamponata nella memoria utente (cioè non scaricato nel buffer del kernel)? La risposta si perde? – Emmett
@Emmett yes, se si chiama 'process.exit()' mentre le chiamate di scrittura bufferizzate rimangono per essere scaricate, tali dati andranno persi. – TooTallNate
Non è del tutto sicuro "chiamare' write() 'senza preoccuparsi del valore di ritorno". I [documenti attuali] (https://nodejs.org/dist/v8.4.0/docs/api/stream.html) dicono: _ "Durante il richiamo di' write() 'su un flusso che non sta svuotando è permesso, Node .js bufferizzerà tutti i blocchi scritti fino a quando non si verificherà l'utilizzo massimo della memoria, a quel punto si interromperà incondizionatamente.Ancora prima che si interrompa, l'uso elevato della memoria causerà scarso rendimento del garbage collector e alto RSS (che in genere non viene restituito al sistema, anche dopo che la memoria non è più necessaria). "_ Vedi anche: https://stackoverflow.com/q/37579605 – TachyonVortex