[英]wait till functions with ajax calls finish execution in jquery
我有3個功能,在每個功能中我都有一個AJAX調用,它本質上是同步的。
function()
{
a();
b();
c();
}
a()
{
ajaxGet(globals.servicePath + '/Demo.svc/GetDemoList/' + sessionStorage.SessionId,function(data, success) {}, '', {async: false}, false);
}
對於b()和c()同樣。
現在,我想等待這些調用的執行,然后繼續執行其他操作,因為這些操作基於我到達此處的結果。 我怎樣才能做到這一點?
async: false
。 這樣就導致了陰暗面! 一種解決方案是使用從Ajax調用返回的jQuery Promise。
如果您想知道何時完成所有3個操作(以任何順序異步),請使用$.when()
:
function()
{
$.when(a(), b(), c()).done(function(){
// Now do something else
});
}
並使每個方法返回Ajax調用的jQuery Promise:
function a()
{
return $.ajax(globals.servicePath + '/Demo.svc/GetDemoList/' + sessionStorage.SessionId,function(data, success) {}, ''...);
}
我使用計時器模擬了一些虛假的“ ajax調用”,以顯示此信息:
JSFiddle: http : //jsfiddle.net/TrueBlueAussie/rqq41Lg3/
如果由於某種原因,你想他們運行順序,然后解雇你的額外的代碼,你可以把它們連then
a().then(b).then(c).done(function(){
console.log("All done");
});
JSFiddle: http : //jsfiddle.net/TrueBlueAussie/rqq41Lg3/1/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.