您可以write()安全地打电话而不关心返回值.当内核缓冲区已满时,Node将缓冲所有写入调用,并按预期顺序推送它们.你并不需要等待'drain'重新编写之前的事件.
(可选)您可以检查返回值,write()然后通知写入Stream的事物缓冲区已满.这正是这样Stream#pipe()做的.
通常,只需使用Stream#pipe(),所有的好东西都会照顾你:)
@TooTallNate 答案是错误的。你绝对应该关心.write返回值。
这意味着什么?我是否必须等待耗尽事件才能再次写入?
是的,当.write返回 false 时,您必须等待。
我试图写入的数据发生了什么变化?那丢了吗?
不,它没有丢失,它以正确的顺序缓冲。
当我在不等待耗尽事件的情况下调用 write 时会发生什么?
如果您没有正确处理排放事件,您的脚本将阻塞事件循环,并最终耗尽内存限制使您的应用程序崩溃。
我在另一个问题中给出了详细解释:为什么尝试写入大文件会导致js堆内存不足