我们举一个简单的例子fs.stat
。我可以宣传fs.stat
并写下:
const stats = await stat(file, fs.constants.R_OK);
但如果该文件不存在,则会抛出此异常。除了在try / catch中包装每个await之外,是否有可以在这里使用的干净模式或包装库?可能以stats === undefined | null
结束的东西?
答案 0 :(得分:3)
也许是这样的?
function caughtAwait(func){
try{
return await func();
}
catch(e){
console.log(e);
return null;
}
}
const stats = caughtAwait(()=>stat(file, fs.constants.R_OK));
答案 1 :(得分:0)
一个简单的包装器怎么样:
async function leniently(promise) {
try {
return await promise
} catch(err) {
return null
}
}
用于任何承诺:
const result = await leniently(stat(file, fs.constants.R_OK))
或Promise.all(...)
:
const result = await leniently(Promise.all(...))