等待异步javascript函数返回

时间:2010-06-16 06:53:26

标签: javascript asynchronous callback

我正在使用第三方库提供的功能。此函数将回调函数作为参数,但我想等待在继续之前调用此回调函数。是否有标准/可接受的方式来做到这一点?

3 个答案:

答案 0 :(得分:6)

我不确定这是否是一个可能的解决方案,但您可以通过将代码分解为2个函数来实现所需的结果。 假设这是你打算做的事情:

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

function origFunc() {

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

您可以使用以下内容修改代码流:

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

这将消除等待循环。据我所知,忙碌的等待在IE中不起作用(因为?上帝只知道)..

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我不知道Sharad的解决方案是否适用于所有情况(例如,如果函数调用到目前为止已被链接,则必须将数据作为变量而不是参数传递)。全局变量也有同样的问题。 JavaScript只是没有“等待”能力。

虽然我遇到了类似的问题并且使用了jQuery,但我最终得到了一个MacGyver类型的解决方案,可让您在javascript函数执行时获得大量控制权。我只是在这里发布它作为我自己的问题的答案(但我是一个未经检查的答案 - 查找我的用户名Emile):How to get a variable returned across multiple functions - Javascript/jQuery