Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS事件处理程序:异步函数_Javascript_Cordova_Event Handling_Async Await - Fatal编程技术网

Javascript JS事件处理程序:异步函数

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("

我正在用Cordova开发一个应用程序。在一个页面上,有一个EventListener调用异步函数<代码>窗口.addEventListener(“加载”,loadEdit(),false)

该函数类似于
异步函数loadEdit(){…}

在浏览器中测试时,即使功能已完全执行,我仍会收到以下错误:

TypeError:属性“handleEvent”不可调用

但是,如果我将EventListener更改为另一个调用异步函数的函数,则似乎没有问题。 例如:

window.addEventListener("load", loadPre(), false);
...
function loadPre()
{
  loadEdit();
}
  • EventListener调用异步函数有什么问题
  • 为什么它没有检测到第二个方法也调用异步函数

  • 您可以从
    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)