如何处理事件调用的异步函数?
How to handle an async function called by an event?
假设我有一个名为 'Main' 的异步函数,它在页面加载期间被调用,如下所示:
window.addEventListener('load', Main);
由于 Main
是一个异步函数,我想通过附加 .catch((e)=>{ console.error(e);});
从它的承诺链中捕获错误。但是,我认为这与 window.addEventListener
(returns 未定义)配合得不好,并且只期望函数的赋值作为第二个参数。
是否可以在不创建包装函数的情况下处理 Main 的承诺拒绝?
你有两个选择:
使用包装函数,或者
使用try
/catch
处理Main
内的所有错误
例如:
window.addEventListener("load", evt => {
Main(evt).catch(err => {
//...handle/report error...
});
});
或 Main
:
async function Main(evt) {
try {
// ...your logic...
} catch (e) {
//...handle/report error...
}
}
在这两种情况下,请确保“handle/report 错误”代码本身不会引发错误。 :-)
假设我有一个名为 'Main' 的异步函数,它在页面加载期间被调用,如下所示:
window.addEventListener('load', Main);
由于 Main
是一个异步函数,我想通过附加 .catch((e)=>{ console.error(e);});
从它的承诺链中捕获错误。但是,我认为这与 window.addEventListener
(returns 未定义)配合得不好,并且只期望函数的赋值作为第二个参数。
是否可以在不创建包装函数的情况下处理 Main 的承诺拒绝?
你有两个选择:
使用包装函数,或者
使用
处理try
/catch
Main
内的所有错误
例如:
window.addEventListener("load", evt => {
Main(evt).catch(err => {
//...handle/report error...
});
});
或 Main
:
async function Main(evt) {
try {
// ...your logic...
} catch (e) {
//...handle/report error...
}
}
在这两种情况下,请确保“handle/report 错误”代码本身不会引发错误。 :-)