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