如何处理事件调用的异步函数?

时间:2020-07-25 12:31:16

标签: javascript promise async-await event-handling catch-block

假设我有一个名为“ Main”的异步函数,该函数在页面加载期间会像这样被调用:

window.addEventListener('load', Main);

由于Main是一个异步函数,因此我想通过追加.catch((e)=>{ console.error(e);});从其Promise链中捕获错误。但是,我认为它不能与window.addEventListener(返回未定义)配合使用,并且只希望将函数的赋值作为第二个参数。

是否可以在不创建包装函数的情况下处理Main的承诺拒绝?

1 个答案:

答案 0 :(得分:1)

您有两个选择:

  1. 使用包装函数,或

  2. 使用Main / try处理catch中的所有错误

例如:

window.addEventListener("load", evt => {
    Main(evt).catch(err => {
        //...handle/report error...
    });
});

或在Main中:

async function Main(evt) {
    try {
        // ...your logic...
    } catch (e) {
        //...handle/report error...
    }
}

在两种情况下,请确保“处理/报告错误”代码本身绝不会引发错误。 :-)