簡體   English   中英

等到帶有ajax調用的函數在jquery中完成執行

[英]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 這樣就導致了陰暗面!
  • B:看A :)

一種解決方案是使用從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM