2013-08-21 9 views
16

Kiedy używać async false lub async true w wywołaniu ajax. Pod względem wydajności robi jakąkolwiek różnicę?Kiedy używać async false i async true w funkcji ajax w jquery

przykład:

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

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

     } 
    }); 
+0

Możliwy duplikat: http://stackoverflow.com/questions/1052453/ajax-requests-synchronous-vs-asynchronous –

+0

To nie jest kwestia wydajność. – JJJ

+0

Zasadniczo jest to przydatne, gdy trzeba wykonać wykonanie kodu lub wykonać wywołanie usługi w jakiś specyficzny sposób, na przykład asynchronicznie lub synchronicznie, co jest bardzo przydatne. zgodnie z kodem zdefiniować po tym kodzie zdefiniować kod i wywołanie ajax zrobić async true, to będzie wykonywać tak asaknorously. – VjyV

Odpowiedz

25

To nie jest w stosunku do wydajności ...

ustawić async false, gdy trzeba, że ​​ajax prośba być zakończone przed przeglądarka przechodzi do innych kodów:

<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

Najlepiej postępować asynchronicznie, jeśli można równolegle wykonywać kilka czynności (brak współzależności). Jeśli jest to potrzebne do ukończenia nadal ładuje następną rzeczą, można użyć synchroniczny, ale należy pamiętać, że ta opcja jest przestarzała, aby uniknąć nadużywania Sync:

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

Tutaj SetParamForToDoList zostaną ścięci pierwszy po funkcja ActionForm.EditActionFormPopup zostanie uruchomiona.

4
  1. Gdy ustawienie asynchroniczne ma wartość fałsz, zamiast wywołania asynchronicznego wykonywane jest wywołanie synchroniczne.
  2. Gdy ustawienie asynchroniczne funkcji jQuery AJAX ma wartość true, wykonywane jest wywołanie asynchroniczne jQuery. Sam AJAX oznacza Asynchroniczny JavaScript i XML, a więc jeśli zrobisz Synchroniczny, ustawiając asynchroniczne ustawienie na false, nie będzie to już wywołanie AJAX.
  3. więcej informacji można znaleźć ten link ===>https://www.aspsnippets.com/Articles/jQuery-AJAX-Async-False-Synchronous-call-and-Async-True-Asynchronous-call-difference.aspx
Powiązane problemy