代码之家  ›  专栏  ›  技术社区  ›  Nippysaurus

等待异步javascript函数返回

  •  8
  • Nippysaurus  · 技术社区  · 14 年前

    我正在使用第三方库提供的函数。此函数接受回调函数作为参数,但我希望在继续之前等待调用此回调。有没有一种标准的/公认的方法来做到这一点?

    3 回复  |  直到 12 年前
        1
  •  6
  •   Sharad    14 年前

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

    基本上这是你最初的功能:

    function origFunc() {
    
        codeBeforeThirdPartyFunc();
        ThirdPartyFunc(oldCallBackFunc);
        Wait();
        codeAfterCallBackFunc();
    }
    

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

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

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

        2
  •  1
  •   Phil    12 年前

    这是另一种方法 loading jQuery asynchronously 不依赖其他脚本。

        3
  •  0
  •   Community Ian Goodfellow    7 年前

    我不知道sharad的解决方案是否在所有情况下都能工作(例如,如果函数调用被链接得太远,以至于必须将数据作为变量而不是参数传递)。全局变量也有同样的问题。javascript没有“等待”功能。

    虽然我也遇到了类似的问题,并且使用了jquery,但最终我得到了一个MacGyver类型的解决方案,它可以让您对JavaScript函数的执行时间进行大量的控制。我刚把它贴在这里作为我自己问题的答案(但我这是一个没有检查的答案-找我的用户名emire): How to get a variable returned across multiple functions - Javascript/jQuery