问题描述
我通过管道将自定义可读流传输到自定义可写流。 pipeline
/ pipe
方法获取 Readable 和 Writable 的 error
事件。
我如何知道我从管道中得到的错误是来自 Readable 还是 Writable?
我可以监听 Readable\Writable on error 事件,但是从管道本身接收到相同的错误事件,所以我得到了 2 到 3 次,然后很难比较我从他们那里得到的和什么我从管道中得到的。我希望有更好的方法来解决它。
在下面的示例中,取消注释第一个注释以从可读中获取错误,并取消注释第二个注释以从可写中获取错误。
const { Readable,Writable,pipeline } = require('stream');
const fs = require('fs/promises')
const { promisify } = require('util')
const customreadable = new Readable({ objectMode: true,read(){} });
customreadable.push({ name: 'file1',content: 'hello world' });
customreadable.push({ name: 'file2',content: 'hello world2' });
// customreadable.destroy(new Error('Error from Readable'));
class CustomWritable extends Writable {
constructor() {
super({ objectMode: true });
}
async _write(obj,_,callback) {
try {
// throw new Error('Error from Writeable');
await fs.writeFile(obj.name,obj.content);
callback();
} catch (err) {
callback(err);
}
}
}
const pipelinePromise = promisify(pipeline);
pipelinePromise(customreadable,new CustomWritable())
.then(() => {
console.log('completed successfully');
})
.catch(err => {
console.error('pipeline found an error',err);
})
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)