在构建复杂的流管道时,将错误从一个阶段传递到下一个阶段通常是有意义的。 (在当前的情况下,我考虑了Gulp管道。)但显然Node.js流pipe
方法并没有这样做。
可以手动将一个流的错误事件侦听器绑定到下一个流的错误事件发射器。但这很乏味。
是否有一些简单的方法来构建具有错误链接的管道?或者有一些原因导致人们不应该这样做吗?
示例:
var through = require("through2");
var s1 = through(function(chunk, enc, cb) {
console.log("In 1: " + chunk.toString());
cb(null, chunk);
});
var s2 = through(function(chunk, enc, cb) {
console.log("In 2: " + chunk.toString());
if (chunk.toString() === "error")
cb(Error("Something broke"), null);
else
cb(null, chunk);
});
var s3 = through(function(chunk, enc, cb) {
console.log("In 3: " + chunk.toString());
cb(null, chunk);
});
s1.pipe(s2).pipe(s3)
.on("data", function(chunk, enc) {
console.log("Out: " + chunk.toString());
})
.on("error", function(err) {
console.log("Final error: " + err);
})
;
////////////////////////////////////////////////////
// The following two lines are the relevant part. //
s1.on("error", s2.emit.bind(s2, "error")); //
s2.on("error", s3.emit.bind(s3, "error")); //
////////////////////////////////////////////////////
s1.write("first");
s1.write("error");
s1.write("last");
答案 0 :(得分:0)