尝试推迟进一步处理脚本,直到ajax调用完成而不使用回调。尝试这样的东西,但它锁定。如何在不锁定的情况下执行此操作?
var loaded=false;
$.get(url,function(d){loaded=true;});
while(!loaded) //<--locks here
setTimeout(void(0),100);
//continue script after ajax call is complete
答案 0 :(得分:0)
您是否尝试过承诺?
{{1}}
答案 1 :(得分:0)
试试这个
var loaded=false;
$.ajax({
url : 'your url',
type : 'GET',
async : false, // You need this
complete: function(data) {
loaded=true;
},
});
while(!loaded) //<--locks here
setTimeout(void(0),100);
答案 2 :(得分:0)
如果您使用jQuery,deferred objects是可行的方法。他们实施了一种强大而简单的方法。
但是,如果您希望脚本正常工作,请尝试以下操作:
var loaded = false;
function myfunc() {
if (loaded) {
clearInterval(timeout);
doSomethingAfter();
}
}
var timeout = setInterval(myfunc, 100);
$.get(url,function(d){loaded=true;});