等待异步JavaScript函数返回

8

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


12
尽管异步编程可能会让人感到困扰,但请接受它并不要试图与其对抗。 - Anurag
3个回答

6
我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:

我不确定这是否对您来说是一个可行的解决方案,但您可以通过将代码分成两个函数来实现所需的结果。 假设以下是您想要执行的操作:

基本上,这是您原来的函数:

function origFunc() {

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

您可以使用类似以下代码来修改代码流程:
function newFunc() {
    codeBeforeThirdPartyFunc();
    ThirdPartyFunc(newCallBackFunc);
}
function newCallBackFunc() {
  oldCallBackFunc();
  codeAfterCallBackFunc();
}

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

1

0

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

虽然我遇到了类似的问题,并且使用了jQuery,但最终我采用了一种MacGyver类型的解决方案,可以让您完全控制JavaScript函数何时执行。我在这里发布了自己的问题的答案(但它是一个未经验证的答案-请查找我的用户名Emile):如何在多个函数之间返回变量-Javascript / jQuery


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接