等待异步JavaScript函数返回

问题描述:

我正在使用由第三方库提供的函数。该函数将回调函数作为参数,但我希望在继续之前等待此回调函数被调用。有没有一个标准/可接受的方式来做到这一点?等待异步JavaScript函数返回

+12

只是拥抱异步。不要试图去对抗它。 – Anurag 2010-06-16 06:59:39

我不知道这对你是一个可能的解决方案,但你可以实现打破你的代码2个功能所需的结果。 假设这是你想要做什么:

基本上这是你原来的功能:

function origFunc() { 

    codeBeforeThirdPartyFunc(); 
    ThirdPartyFunc(oldCallBackFunc); 
    Wait(); 
    codeAfterCallBackFunc(); 
} 

您可以修改的东西,如代码流:

function newFunc() { 
    codeBeforeThirdPartyFunc(); 
    ThirdPartyFunc(newCallBackFunc); 
} 
function newCallBackFunc() { 
    oldCallBackFunc(); 
    codeAfterCallBackFunc(); 
} 

这将消除等待循环。而据我所知,忙等待期间不工作在IE(因为?只有上帝知道)..

我不知道,如果沙拉德的解决方案将适用于所有情况(例如,如果你的函数调用所以远远地链接,你必须传递数据作为变量而不是参数)。与全局变量相同的问题。 JavaScript只是没有“等待”能力。

虽然我也有类似的问题,并与jQuery,我结束了一个百战天龙型解决方案,让您吨控件时JavaScript函数执行上。我刚刚张贴在这里作为一个答案,以我自己的问题(但我它是不是签一个答案 - 寻找我的用户名埃米尔):How to get a variable returned across multiple functions - Javascript/jQuery

这里是loading jQuery asynchronously另一种方法,它不依赖于另一个脚本。