我正在尝试使用管道功能正确处理错误事件。
鉴于我在Promise中有两个流A(转换stream.passThrough())和B(writeStream),代码如下:
new Promise( (resolve, reject) => {
A.pipe(B).on('error', (err)=>{reject})
.on('end', ()=>{resolve})})
上面的代码拒绝了预期的承诺,但是,流A一直在工作。有人可以建议我如何阻止A流流动吗?
答案 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) })
})