Node.js的可写stream和排水事件

write()的文档说:

返回false表示内核缓冲区已满,数据将在未来发送出去。

drain事件的文件说:

在write()方法返回false之后,会发出此事件以指示再次写入是安全的。

那是什么意思? 在我能再次写信之前,我是否必须等待drain事件? 我试图写的数据发生了什么? 这是失去了吗? 当我打电话写而不等待drain事件时会发生什么?

你可以调用write()而不必关心安全的返回值。 当内核缓冲区已满时,节点将缓冲任何写入调用,并按照您所期望的顺序推送它们。 再次写入之前,您不需要等待'drain'事件。

或者,您可以检查write()的返回值,然后通知正在写入Stream的事物缓冲区已满。 这正是Stream#pipe()所做的 。

所以通常,只需使用Stream#pipe() ,所有的好东西都照顾你:)