如何从节点流错误中恢复?
How can I recover from node stream error?
是否可以从节点流错误中恢复?例如,对于 promises 你可以做类似
的事情
async function getThumbnail(id, width, height) {
try {
const thumbnail = await readThumbnail(id, width, height);
return thumbnail;
} catch {
// The thumbnail doesn't exist, so we will create and cache it
const thumbnail = await createThumbnail(id, width, height);
return thumbnail;
}
}
如果 readThumbnail()
return 是流而不是承诺,如果缩略图不存在,是否可以从流错误中恢复? getThumbnail()
方法的目标是始终 return 工作流,无论缩略图是否存在。
我找到了使用第三个流的方法
function getThumbnail(id, width, height) {
const readable = new PassThrough();
readThumbnail(id, width, height)
// It is important that this error handler is above the pipe
.on('error', error => {
createThumbnail(id, width, height).pipe(readable);
})
.pipe(readable);
return readable;
}
是否可以从节点流错误中恢复?例如,对于 promises 你可以做类似
的事情async function getThumbnail(id, width, height) {
try {
const thumbnail = await readThumbnail(id, width, height);
return thumbnail;
} catch {
// The thumbnail doesn't exist, so we will create and cache it
const thumbnail = await createThumbnail(id, width, height);
return thumbnail;
}
}
如果 readThumbnail()
return 是流而不是承诺,如果缩略图不存在,是否可以从流错误中恢复? getThumbnail()
方法的目标是始终 return 工作流,无论缩略图是否存在。
我找到了使用第三个流的方法
function getThumbnail(id, width, height) {
const readable = new PassThrough();
readThumbnail(id, width, height)
// It is important that this error handler is above the pipe
.on('error', error => {
createThumbnail(id, width, height).pipe(readable);
})
.pipe(readable);
return readable;
}