Node.js的可写stream和排水事件
write()的文档说:
返回false表示内核缓冲区已满,数据将在未来发送出去。
和drain
事件的文件说:
在write()方法返回false之后,会发出此事件以指示再次写入是安全的。
那是什么意思? 在我能再次写信之前,我是否必须等待drain
事件? 我试图写的数据发生了什么? 这是失去了吗? 当我打电话写而不等待drain
事件时会发生什么?
你可以调用write()
而不必关心安全的返回值。 当内核缓冲区已满时,节点将缓冲任何写入调用,并按照您所期望的顺序推送它们。 再次写入之前,您不需要等待'drain'
事件。
或者,您可以检查write()
的返回值,然后通知正在写入Stream的事物缓冲区已满。 这正是Stream#pipe()
所做的 。
所以通常,只需使用Stream#pipe()
,所有的好东西都照顾你:)