我正在使用一个第三方库提供的函数。该函数将回调函数作为参数,但我希望在继续之前等待此回调被调用。是否有标准/公认的方法来做到这一点?
我正在使用一个第三方库提供的函数。该函数将回调函数作为参数,但我希望在继续之前等待此回调被调用。是否有标准/公认的方法来做到这一点?
我不确定这是否对您来说是一个可行的解决方案,但您可以通过将代码分成两个函数来实现所需的结果。 假设以下是您想要执行的操作:
基本上,这是您原来的函数:
function origFunc() {
codeBeforeThirdPartyFunc();
ThirdPartyFunc(oldCallBackFunc);
Wait();
codeAfterCallBackFunc();
}
function newFunc() {
codeBeforeThirdPartyFunc();
ThirdPartyFunc(newCallBackFunc);
}
function newCallBackFunc() {
oldCallBackFunc();
codeAfterCallBackFunc();
}
我不知道Sharad的解决方案是否适用于所有情况(例如,如果您的函数调用如此深层嵌套,以至于必须将数据作为变量而不是参数传递)。全局变量也有同样的问题。JavaScript只是没有“等待”的能力。
虽然我遇到了类似的问题,并且使用了jQuery,但最终我采用了一种MacGyver类型的解决方案,可以让您完全控制JavaScript函数何时执行。我在这里发布了自己的问题的答案(但它是一个未经验证的答案-请查找我的用户名Emile):如何在多个函数之间返回变量-Javascript / jQuery