2013-08-21 241 views
16

何時在ajax調用中使用async false或async true。在性能方面它有什麼不同?什麼時候在jQuery中的ajax函數中使用async false和async true

例如:

$.ajax({ 
     url : endpoint, 
     type : "post", 
     async : false, 
     success : function(data) { 
       if (i==1){ 
       getMetricData(data)} 

       else if (i==2) 
       { 
        capture = data; 
       } 

     } 
    }); 
+0

可能重複:http://stackoverflow.com/questions/1052453/ajax-requests-synchronous-vs-asynchronous –

+0

這不是一個問題性能。 – JJJ

+0

基本上,當您需要以某種特定的方式執行代碼執行或服務調用執行時(例如異步或同步方式),這種方式非常有用。 根據你的代碼定義了這段代碼之後,你定義了一些代碼和ajax調用使async選項成爲true,那麼它將執行類似asychnorously。 – VjyV

回答

25

這不是相對於性能...

您異步設置爲false,當你需要瀏覽器傳遞給其它代碼之前完成Ajax請求:

<script> 
    // ... 
    $.ajax(... async: false ...); // Hey browser! first complete this request, 
            // then go for other codes 

    $.ajax(...); // Executed after the completion of the previous async:false request. 
</script> 
0

如果你可以並行做幾件事情(沒有相互依賴關係),最好的做法是異步。 如果你需要它完成繼續加載,你可以使用同步,接下來的事情,但請注意,此選項已被棄用,以避免同步的濫用:

jQuery.ajax() method's async option deprecated, what now?

0
ShowPopUpForToDoList: function (id, apprId, tab) { 
    var snapShot = "isFromAlert"; 
    if (tab != "Request") 
     snapShot = "isFromTodoList"; 
    $.ajax({ 
     type: "GET", 
     url: common.GetRootUrl('ActionForm/SetParamForToDoList'), 
     data: { id: id, tab: tab }, 
     async:false, 
     success: function (data) { 
      ActionForm.EditActionFormPopup(id, snapShot); 
     } 
    }); 
}, 

這裏SetParamForToDoList將第一後excecuted功能ActionForm.EditActionFormPopup將會觸發。

4
  1. 當異步設置設置爲false時,將執行同步調用而不是異步調用。
  2. 當jQuery AJAX函數的異步設置設置爲true時,就會產生一個jQuery異步調用。 AJAX本身意味着異步JavaScript和XML,因此如果通過將異步設置設置爲false使其成爲同步,則它將不再是AJAX調用。
  3. 的更多信息,請參考以下鏈接===>https://www.aspsnippets.com/Articles/jQuery-AJAX-Async-False-Synchronous-call-and-Async-True-Asynchronous-call-difference.aspx
相關問題