管道中的流错误处理-停止上一个流

时间:2018-12-18 05:58:05

标签: javascript node.js typescript stream

我正在尝试使用管道功能正确处理错误事件。

鉴于我在Promise中有两个流A(转换stream.passThrough())和B(writeStream),代码如下:

new Promise( (resolve, reject) => {
               A.pipe(B).on('error', (err)=>{reject})
                         .on('end', ()=>{resolve})})

上面的代码拒绝了预期的承诺,但是,流A一直在工作。有人可以建议我如何阻止A流流动吗?

1 个答案:

答案 0 :(得分:0)

发生错误时,您可以销毁流A:

  

transform.destroy([error]) 破坏流,并发出“错误”消息。在此调用之后,转换流将释放任何内部资源。实现者不应重写此方法,而应实现可读._destroy()。 _destroy()用于Transform的默认实现也会发出“关闭”消息。

编辑

new Promise( (resolve, reject) => {
               A.pipe(B).on('error', err => { A.destroy(); reject(err); })
                         .on('end',    e => { resolve(e) })
})