如何将可写"_write"函数中抛出的错误传递回调用方?



如何在可写表中抛出错误&quot_写";函数传递回调用者?

错误消息说错误是未捕获的,但必须在回调中发送错误,那么在哪里可以捕获它呢?我尝试过在getWritable函数的不同位置放置try/catch块,但没有成功。

const { pipeline } = require('node:stream/promises');
const { Readable, Writable } = require('node:stream');
function getWritable() {
const WritableStream = new Writable({
objectMode: true,
write(chunk, encoding, callback) {
console.log(chunk);
callback(('Throw error here'));
},
});
return WritableStream;
}
try {
const writestream = getWritable();
const readstream = Readable.from('1,xcxn2,xyn3,xz');
pipeline(
readstream,
writestream,
);
} catch (err) {
console.log(`Can error be caught here? ${err}`);
}

我找到了解决方案。由于管道返回promise,请使用promise catch而不是try/catch。

const { pipeline } = require('node:stream/promises');
const { Readable, Writable } = require('node:stream');
function getWritable() {
const WritableStream = new Writable({
objectMode: true,
write(chunk, encoding, callback) {
console.log(chunk);
callback(('Throw error here'));
},
});
return WritableStream;
}
const writestream = getWritable();
const readstream = Readable.from('1,xcxn2,xyn3,xz');
pipeline(
readstream,
writestream,
).catch((err) => {
console.log(`Can error be caught here? ${err}`);
});