Javascript JS事件处理程序:异步函数
我正在用Cordova开发一个应用程序。在一个页面上,有一个EventListener调用异步函数<代码>窗口.addEventListener(“加载”,loadEdit(),false)代码> 该函数类似于Javascript JS事件处理程序:异步函数,javascript,cordova,event-handling,async-await,Javascript,Cordova,Event Handling,Async Await,我正在用Cordova开发一个应用程序。在一个页面上,有一个EventListener调用异步函数窗口.addEventListener(“加载”,loadEdit(),false) 该函数类似于异步函数loadEdit(){…} 在浏览器中测试时,即使功能已完全执行,我仍会收到以下错误: TypeError:属性“handleEvent”不可调用 但是,如果我将EventListener更改为另一个调用异步函数的函数,则似乎没有问题。 例如: window.addEventListener("
异步函数loadEdit(){…}
在浏览器中测试时,即使功能已完全执行,我仍会收到以下错误:
TypeError:属性“handleEvent”不可调用
但是,如果我将EventListener更改为另一个调用异步函数的函数,则似乎没有问题。
例如:
window.addEventListener("load", loadPre(), false);
...
function loadPre()
{
loadEdit();
}
您可以从
EventListener
调用异步函数
我看到的第一个问题是,您正在窗口的第二个参数中立即调用回调函数。通过将其作为loadEdit()
而不是loadEdit
或()=>loadEdit()
包含,添加了EventListener
。您必须给它一个函数作为第二个参数,现在您给出的是一个承诺或loadPre()
的返回值
试着这样做:
window.addEventListener("load", () => loadEdit(), false);
async function loadEdit() {
// do the await things here.
}
异步函数返回承诺。因此,如果您想在loadEdit
之后执行某些操作,请尝试:
window.addEventListener("load", () => {
loadEdit().then(/* callback function here */);
}, false);
async function loadEdit() {
// do the await things here.
}
Try window.addEventListener(“加载”,等待加载编辑(),false);Try window.addEventListener(“加载”,loadPre,false);还有函数loadPre(event)I如果在loadEdit之后不需要执行某些操作,为什么不使用
loadEdit
,而不是()=>loadEdit()
?或window.addEventListener(“load”,async()=>{/…code},false)代码>