让我们举一个简单的例子,fs.stat
。我可以promisify fs.stat
和写:等待和异步当你不关心错误
const stats = await stat(file, fs.constants.R_OK);
但如果该文件不存在则抛出。除了在try/catch中包装每一个等待,是否有一个干净的模式或包装库可以在这里使用?有些东西可能以stats === undefined | null
结束?
让我们举一个简单的例子,fs.stat
。我可以promisify fs.stat
和写:等待和异步当你不关心错误
const stats = await stat(file, fs.constants.R_OK);
但如果该文件不存在则抛出。除了在try/catch中包装每一个等待,是否有一个干净的模式或包装库可以在这里使用?有些东西可能以stats === undefined | null
结束?
也许是这样的?
function caughtAwait(func){
try{
return await func();
}
catch(e){
console.log(e);
return null;
}
}
const stats = caughtAwait(()=>stat(file, fs.constants.R_OK));
是的,我正在考虑写一个像这样的简单的库,它也可以处理数组('Promise.all')和其他任何我能想到的东西。我主要是好奇,如果任何人已经完成了这一点,并认为通过各种案件 –
我明白,虽然你想要什么似乎过于简单和直接使用外部库恕我直言。我在这里也有一个真正的机会。祝你好运 –
怎么样一个简单的包装:
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(...))
@hindmost - 这已经无关节点,我只是以节点为例 –