0

我刚刚读到,如果流使用'data''end'侦听器,它会切换到“经典”模式,流手册说:

请注意,每当您注册“数据”侦听器时,都会将流置于兼容模式,因此您将失去新的 streams2 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'监听器的情况下做同样的事情

4

1 回答 1

2

只有调用.resume()/.pause()或添加“数据”侦听器才会将streams2 流切换到streams1 流。您可以在不影响任何内容的情况下收听“结束”。

在您的特定示例中,即使它确实切换了,它也不会影响您,因为您只是管道,它适用于流 1 和流 2 模式。

此外,如果最后一个流 ( gulp.dest "./bin/server") 不是双工流或您不使用其中的数据,您可能看不到“结束”事件。如果它只是一个 Writable 流,则应改为侦听“finish”(“end”仅在 Readable 流上发出)。

于 2014-06-23T22:58:33.243 回答