ajax完成后继续,不使用回调

时间:2016-05-20 07:23:35

标签: javascript jquery ajax

尝试推迟进一步处理脚本,直到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

3 个答案:

答案 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;});