流事件:结束与结束

时间:2016-05-21 20:53:14

标签: gulp

我如何知道要收听的事件?

例如,gulp.dest会触发finish事件,稍后会触发end事件。其他一些流只会触发finish事件。当我有一个返回流的方法(可能是读取或写入流)并执行该方法时,我该如何等待返回的流完成?我什么时候需要注册finish以及何时注册end事件?

1 个答案:

答案 0 :(得分:4)

gulp.dest对象是一个Transform对象 - 它处理从(管道)源读取并写入目标。 '结束'活动由读者发出,而“完成”活动则由读者完成。事件由作者发出。

如果您对确保正确完成阅读感兴趣,请使用.on('end')。见:https://nodejs.org/api/stream.html#stream_event_end。 一旦数据完全被流消耗,可读流将发出此信号。因此,由于转换的内部逻辑或错误条件,可能会出现无法触发的情况。

如果是您感兴趣的写作完成,请改用.on('finish')。见:https://nodejs.org/api/stream.html#stream_event_finish。 在将数据刷新到底层系统之后,可写流将发出此信号。因此,在处理预期读取错误的情况下,或者转换早期结束读取的情况下,仍应触发此事件。据我了解,如果意外失败,这将不会激发。