node async / await - 我需要try / catch吗?

时间:2017-01-03 03:24:20

标签: javascript node.js async-await ecmascript-2017

我只是在节点中使用async / await,似乎如果你正在等待一个承诺并且它被拒绝它会抛出。我想知道是否有一个更清洁的模式,而不是回去尝试/捕捉我不知道的块?

async function foo() {
  const val = await Promise.reject();
}

1 个答案:

答案 0 :(得分:1)

try / catch() 更清洁模式,对齐同步和异步错误处理:

(目前适用于Chrome和Firefox开发人员版)



function a(heads) {
  if (heads) throw new Error("Synchronous error");
}

async function b() {
  await Promise.resolve();
  throw new Error("Asynchronous error");
}

async function main(heads) {
  try {
    a(heads);
    await b();
  } catch (e) {
    console.log(e.message);
  }
}
main(false); // Synchronous error
main(true);  // Asynchronous error