【发布时间】:2017-08-25 20:20:07
【问题描述】:
有什么区别:
const stream = createReadStream(source).pipe(createWriteStream(destination));
stream.on("error", (error) => {
stream.destroy();
stream.removeListener("close");
reject(error);
});
stream.on("close", () => {
// do something
});
对比:
const writable = createWriteStream(destination);
const readable = createReadStream(source);
readable.on("error", onError);
writable.on("error", onError);
function onError(error) {
readable.destroy();
writable.destroy();
writable.removeListener("close", onClose);
reject(error);
}
如果发生错误,我们为什么要手动销毁流? Node 不会自动这样做?
谢谢。
【问题讨论】:
-
一般来说,我没有看到人们经常破坏流(他们通常会尝试/捕获和拒绝(错误))。此外,第二个版本更易于阅读,因为它将 readStream 和 writeStream 分开
-
尝试/抓住?为何如此?这是异步的……我认为 try/catch 会失败……
-
实际上你是对的(与 async/await 混淆了)或 promises。关于你的最后一个问题,我会先阅读一下再回复
标签: javascript node.js events stream