gpt4 book ai didi

javascript - 你如何捕捉流转换错误?

转载 作者:行者123 更新时间:2023-12-03 08:17:58 25 4
gpt4 key购买 nike

这是可读流原生定义

// This is the part where you do stuff!
// override this function in implementation classes.
// 'chunk' is an input chunk.
//
// Call `push(newChunk)` to pass along transformed output
// to the readable side. You may call 'push' zero or more times.
//
// Call `cb(err)` when you are done with this chunk. If you pass
// an error, then that'll put the hurt on the whole operation. If you
// never call cb(), then you'll never get another chunk.
Transform.prototype._transform = function (chunk, encoding, cb) {
throw new Error('_transform() is not implemented');
};
所以在你自己的定义中,当你想传递一个错误时,你调用 cb(new Error('...'))但是当我这样做时,如果流是管道的,我怎么能捕捉到这些?
我的意思是不使用 process.on('uncaughtException') 以正常方式捕获它们。事件

最佳答案

流中的错误处理应通过添加 .on("error", cb) 为每个可读/可写单独处理处理程序。
然而,node 还提供了一个实用函数,可以保证流中的错误处理。如果抛出错误,实用程序函数也会负责销毁流:

import util from "util";
import stream from "stream";

await util.promisify(stream.pipeline)(
new stream.Readable(), // a source
new stream.Transform({
transform: (chunk, encoding, callback) => {}
}),
new stream.Writable() // a sink
);

关于javascript - 你如何捕捉流转换错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63656702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com