【发布时间】:2011-03-04 08:00:04
【问题描述】:
我正在使用第三方库提供的函数。此函数将回调函数作为参数,但我想等待调用此回调后再继续。是否有标准/公认的方式来做到这一点?
【问题讨论】:
-
拥抱异步。不要试图与之抗争。
标签: javascript asynchronous callback
我正在使用第三方库提供的函数。此函数将回调函数作为参数,但我想等待调用此回调后再继续。是否有标准/公认的方式来做到这一点?
【问题讨论】:
标签: javascript asynchronous callback
我不确定这是否适合您,但您可以通过将代码分成 2 个函数来实现所需的结果。 假设您打算这样做:
基本上这是你原来的功能:
function origFunc() {
codeBeforeThirdPartyFunc();
ThirdPartyFunc(oldCallBackFunc);
Wait();
codeAfterCallBackFunc();
}
您可以通过以下方式修改代码流:
function newFunc() {
codeBeforeThirdPartyFunc();
ThirdPartyFunc(newCallBackFunc);
}
function newCallBackFunc() {
oldCallBackFunc();
codeAfterCallBackFunc();
}
这将消除等待循环。而且据我所知,在 IE 中忙等待是行不通的(因为?只有上帝知道)..
【讨论】:
我不知道 Sharad 的解决方案是否适用于所有情况(例如,如果您的函数调用被链接到您必须将数据作为变量而不是参数传递)。全局变量也有同样的问题。 JavaScript 只是没有“等待”的能力。
虽然我在使用 jQuery 时遇到了类似的问题,但我最终得到了一个 MacGyver 类型的解决方案,它可以让您对 javascript 函数的执行时间进行大量控制。我只是在这里发布它作为我自己问题的答案(但我这是一个没有检查的答案 - 查找我的用户名 Emile):How to get a variable returned across multiple functions - Javascript/jQuery
【讨论】:
这是loading jQuery asynchronously 的另一种方法,它不依赖于另一个脚本。
【讨论】: