8
的documentation for write()說:Node.js的可寫流和漏事件
返回FALSE以表明內核緩衝區已滿,數據將在未來被髮送出去。
,爲drain
事件的文件說:
一個write()方法後返回false,發出此事件,以表明它是安全的再次寫入。
這是什麼意思?在我能夠再次寫作之前,是否必須等待drain
事件?我試圖寫的數據發生了什麼?這是失去了嗎?當我在不等待drain
事件的情況下致電寫入時會發生什麼?
如果你打電話'process.exit會發生什麼()',而'res.write'仍緩存在用戶存儲器(即不刷新到內核緩衝區)?響應是否會丟失? – Emmett 2014-04-23 21:32:45
@Emmett是的,如果你在調用'process.exit()'的時候有緩衝的寫入調用還要刷新,那麼這些數據將會丟失。 – TooTallNate 2014-05-25 15:55:07
「調用write()'而不關心返回值並不完全安全」。 [當前文檔](https://nodejs.org/dist/v8.4.0/docs/api/stream.html)說:_「雖然在不排水的流上調用write(),但Node .js將緩衝所有寫入的塊,直到最大內存使用率發生,此時它將無條件地中止。即使在中止之前,高內存使用率也會導致較差的垃圾收集器性能和較高的RSS(通常不會釋放回系統,甚至之後不再需要內存)。「_另請參閱:https://stackoverflow.com/q/37579605 – TachyonVortex 2017-08-27 14:34:06