等待和当你不关心错误时,你就是异步

时间:2017-07-12 10:15:06

标签: javascript async-await

我们举一个简单的例子fs.stat。我可以宣传fs.stat并写下:

const stats = await stat(file, fs.constants.R_OK);

但如果该文件不存在,则会抛出此异常。除了在try / catch中包装每个await之外,是否有可以在这里使用的干净模式或包装库?可能以stats === undefined | null结束的东西?

2 个答案:

答案 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(...))