挂钩到异步javascript调用的末尾

时间:2011-09-22 04:22:36

标签: javascript ajax

我正在调用第三方提供的javascript函数。此函数在返回之前触发一些ajax /异步请求,并且(不礼貌地)既不允许我传递回调,也不返回对它正在进行的异步调用的任何引用。

当所有的电话完成后,我有什么方法可以触发某事吗? 有没有办法跟踪从javascript函数启动的'调用'?原谅我的术语;我是一个javascript初学者。

2 个答案:

答案 0 :(得分:1)

这是一个从外部源加载的库,还是您有自己的本地副本?在后一种情况下,您可以修补代码以执行您想要的操作。否则,我真的没有办法直接拦截来电。

如果您确切知道每个完成的异步调用发生了什么状态更改,您可以设置一个函数在一个时间间隔内执行(setInterval(fn,millis))并检查是否已满足所有这些状态。然后,您可以触发某种最终功能来表示完成。

即:

var completionHandler = function() {     /* do something awesome */ }

var checkCompletion = function() { 
   if (state1 && state2 && state3) {
        clearInterval(interval); // make sure you clear the interval.
        completionHandler();
   } 
}

var interval = setInterval(checkCompletion, 200);

答案 1 :(得分:1)

如果您的第三方脚本基于jQuery,您可以尝试使用$ .ajaxSetup()修改ajax行为,设置上下文对象并将ajaxComplete处理程序绑定到此对象。但这可能会搞乱第三方图书馆。