2013-08-21 28 views
16

Khi nào thì sử dụng async false hoặc async true trong cuộc gọi ajax. Xét về hiệu suất, nó có tạo nên sự khác biệt nào không?Khi nào nên sử dụng async false và async true trong chức năng ajax trong jquery

dụ:

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

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

     } 
    }); 
+0

có thể trùng lặp: http://stackoverflow.com/questions/1052453/ajax-requests-synchronous-vs-asynchronous –

+0

Nó không phải là một vấn đề hiệu suất. – JJJ

+0

Về cơ bản, sẽ rất hữu ích khi bạn cần thực hiện mã hoặc thực hiện cuộc gọi dịch vụ theo một số cách cụ thể như cách không đồng bộ hoặc đồng bộ vào thời điểm nó sẽ rất hữu ích. theo mã của bạn xác định sau mã này, bạn xác định một số mã và gọi ajax thực hiện tùy chọn async true sau đó nó sẽ thực thi như asychnorously. – VjyV

Trả lời

25

Nó không liên quan đến hiệu suất ...

Bạn đặt async false, khi bạn cần mà yêu cầu ajax sẽ hoàn thành trước khi trình duyệt đi đến các mã khác:

<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

Thực hành tốt nhất là không đồng bộ nếu bạn có thể thực hiện nhiều việc song song (không phụ thuộc lẫn nhau). Nếu bạn cần nó để hoàn thành để tiếp tục tải điều tiếp theo bạn có thể sử dụng đồng bộ, nhưng lưu ý rằng tùy chọn này không được chấp để tránh lạm dụng đồng bộ:

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); 
     } 
    }); 
}, 

Đây SetParamForToDoList sẽ được excecuted đầu tiên sau chức năng ActionForm.EditActionFormPopup sẽ kích hoạt.

4
  1. Khi cài đặt không đồng bộ được đặt thành false, lệnh gọi đồng bộ được thực hiện thay cho cuộc gọi không đồng bộ.
  2. Khi cài đặt không đồng bộ của chức năng jQuery AJAX được đặt thành true thì cuộc gọi không đồng bộ jQuery được thực hiện. Bản thân AJAX có nghĩa là JavaScript và XML không đồng bộ và do đó nếu bạn làm cho nó đồng bộ bằng cách thiết lập thiết lập async thành false, nó sẽ không còn là một cuộc gọi AJAX nữa.
  3. để biết thêm thông tin vui lòng tham khảo link này ===>https://www.aspsnippets.com/Articles/jQuery-AJAX-Async-False-Synchronous-call-and-Async-True-Asynchronous-call-difference.aspx