如何使脚本等待阿贾克斯的状态,然后再继续get请求?
题
基本上我做的是检查对象的存在,如果它没有找到,该脚本将尝试加载使用getScript加入源文件。我只希望一次检查,虽然这则返回true或false来调用获取函数()
fetch:function(obj){
...
isReady = false;
$.getScript(obj.srcFile,function(){
isReady=true;
warn("was able to load object "+key);
});
return isReady;
}
但脚本之前在返回踢负载= /
后的脚本被加载,但该函数返回假。
这是异步的,我想美容...
什么是处理这个问题的最好方法......也许我可以再次一些其他的点,如果对象存在检查?
或者,也许有更好的方法来做到这一点,我不要有可能锁定浏览器?
解决方案
这是你的代码的组织,我猜你正在使用的对象包含你的方法。如果是这样,那么你可以使用像这样的自定义事件:
var thing = {
fetch: function(obj){
var self = this;
if (obj.isReady){
self.trigger('ready', [obj]);
return;
}
$.getScript(obj.srcFile,function(){
obj.isReady = true;
self.trigger('ready', [obj]);
});
}
};
thing.bind('ready',function(e, obj){
// do what you need to do when the object exists here
});
var obj = {};
thing.fetch(obj);
其他提示
请参阅 jQuery.ajax():请async
假
缺省情况下,所有的请求被发送异步(即这是通过默认设置为true)。如果您需要同步请求,请将此选项设置为false。请注意,同步请求可能会暂时锁定浏览器,禁用任何操作而请求是活动的。
fetch:function(obj){
isReady = false;
$.getScript(obj.srcFile,function(script_data){
isReady=true;
warn("was able to load object "+key);
if ( typeof( script_data ) != 'undefined' ) {
return isReady;
}
});
}
您需要返回的回调函数内的值,否则将启动该请求,然后返回直线距离。
不隶属于 StackOverflow