2016-05-20 3 views
0

コールバックを使用せずに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 
+1

:あなたはあなたのスクリプトが動作するようにしたい場合は

しかし、これを試してみてください。確かにコールバックを使用してそれを行う方法がありますか? –

+0

自分自身に尋ねる_なぜ_より_ "どのように" _... – Rayon

+1

この質問は役に立ちましたか?http://stackoverflow.com/questions/3709597/wait-until-all-jquery-ajax-requests-are-done –

答えて

0

お約束し​​ましたか?

var jqxhr = $.get(url, function() { 
    alert("success"); 
}) 
    .done(function() { 
    void(0); 
    }) 
    .fail(function() { 
    void(0); 
    }) 
    .always(function() { 
    alert("finished"); 
    }); 
+0

彼はcallbcakなしで尋ねました。 – nisar

+0

getのコールバックは、彼が省略できる警告です – Del

0

あなたはjQueryを使って作業する場合、deferred objectsが移動するための方法です。この

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); 
0

をお試しください彼らは堅牢で簡単な方法論を実装しています。コールバックの目的は、ロックを避けるためです

var loaded = false; 

function myfunc() { 
    if (loaded) { 
     clearInterval(timeout); 
     doSomethingAfter(); 
    } 
} 

var timeout = setInterval(myfunc, 100); 
$.get(url,function(d){loaded=true;}); 
関連する問題