【问题标题】:wait for async javascript function to return等待异步 javascript 函数返回
【发布时间】:2011-03-04 08:00:04
【问题描述】:

我正在使用第三方库提供的函数。此函数将回调函数作为参数,但我想等待调用此回调后再继续。是否有标准/公认的方式来做到这一点?

【问题讨论】:

  • 拥抱异步。不要试图与之抗争。

标签: javascript asynchronous callback


【解决方案1】:

我不确定这是否适合您,但您可以通过将代码分成 2 个函数来实现所需的结果。 假设您打算这样做:

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

function origFunc() {

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

您可以通过以下方式修改代码流:

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

这将消除等待循环。而且据我所知,在 IE 中忙等待是行不通的(因为?只有上帝知道)..

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-24
        • 2020-12-23
        • 1970-01-01
        • 1970-01-01
        • 2020-03-21
        • 1970-01-01
        相关资源
        最近更新 更多