Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有错误事件的管道_Javascript_Node.js_Events_Error Handling_Stream - Fatal编程技术网

Javascript 带有错误事件的管道

Javascript 带有错误事件的管道,javascript,node.js,events,error-handling,stream,Javascript,Node.js,Events,Error Handling,Stream,在构建复杂的流管道时,将错误从一个阶段传递到下一个阶段通常是有意义的。(在目前的情况下,我正在考虑吞咽管道。)但是Node.js streampipe方法显然不能做到这一点 可以手动将一个流的错误事件侦听器绑定到下一个流的错误事件发射器。但这相当乏味 是否有一些简单的方法可以使用错误链接构建管道?还是有什么理由不应该这样做 例如: var through = require("through2"); var s1 = through(function(chunk, enc, cb) {

在构建复杂的流管道时,将错误从一个阶段传递到下一个阶段通常是有意义的。(在目前的情况下,我正在考虑吞咽管道。)但是Node.js stream
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");
是否有一些简单的方法可以使用错误链接构建管道

提供了执行此操作的机制

还是有什么理由不应该这样做

我不知道。在许多情况下,这似乎是你有理由想做的事情

是否有一些简单的方法可以使用错误链接构建管道

提供了执行此操作的机制

还是有什么理由不应该这样做

我不知道。在许多情况下,这似乎是你有理由想做的事情