检测stream2上的流结束

时间:2014-06-23 22:50:12

标签: node.js coffeescript gulp node.js-stream

我刚刚读到,如果某个流使用'data''end'个侦听器,则会切换到" classic"模式和stream-handbook说:

  

请注意,无论何时注册"数据"听众,你把流   进入兼容模式,这样你就失去了新stream2的好处   API

那么使用新流API的好处是什么?如果我现在这样做:

gulp.src(["./src/server/**/*.coffee"])
    .pipe(coffee  bare: true ).on("error", gutil.log)
    .pipe(gulp.dest "./bin/server")
    .on 'end',-> gutil.log "successfully compiled server coffeescript"

如果不注册'end'侦听器

,我怎么能做同样的事情

1 个答案:

答案 0 :(得分:2)

仅调用.resume() / .pause()或添加'数据'侦听器会将streams2流切换为streams1流。你可以在不影响任何事情的情况下聆听'结束'。

在你的特定例子中,即使它确实切换它也不会影响你,因为你只是管道,它在streams1和streams2模式下都有效。

此外,如果最后一个流(gulp.dest "./bin/server")不是双工流,或者您不使用其中的数据,则可能看不到“结束”事件。如果它只是一个可写流,你应该听'完成'('结束'只在可读流上发出)。