我正在调用第三方提供的javascript函数。此函数在返回之前触发一些ajax /异步请求,并且(不礼貌地)既不允许我传递回调,也不返回对它正在进行的异步调用的任何引用。
当所有的电话完成后,我有什么方法可以触发某事吗? 有没有办法跟踪从javascript函数启动的'调用'?原谅我的术语;我是一个javascript初学者。
答案 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处理程序绑定到此对象。但这可能会搞乱第三方图书馆。