it-swarm.com.de

Was ist der Unterschied zwischen async: false und async: true in Jquery Ajax?

In jquery ajax gibt es einen Parameter 

$.ajax({async: true, ...});

Was ist der Unterschied zwischen dem Setzen des Wertes auf true und false?

37
Brutal_JL

Sie setzen async auf false, wenn Sie diese ajax-Anfrage abschließen möchten, bevor der Browser an andere Codes übergeben wird:

<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>

By default, the $. AJAXrequest in jQuery is set to asynchronous. Der Variablenname ist asynchron und der Wert ist auf true gesetzt. Dies gab mir auch ein wenig Verwirrung, als ich das erste Mal darüber erfuhr.

Synchronous (async: false) - Das Skript stoppt und wartet, bis der Server eine Antwort zurücksendet, bevor er fortfährt. In einigen Situationen ist Synchronous Ajax obligatorisch.

In Standard-Webanwendungen ist die Interaktion zwischen dem Kunden und dem Server synchron. Dies bedeutet, dass einer nach dem anderen passieren muss. Wenn ein Kunde auf einen Link klickt, wird die Anfrage an den Server gesendet, der die Ergebnisse zurückschickt.

Wegen der Gefahr, dass eine Anforderung verloren geht und der Browser hängen bleibt, wird synchrones Javascript nicht für Ereignisse außerhalb von (vor dem) Entladen von Ereignishandlern empfohlen. Wenn Sie jedoch vom Server etwas hören müssen, bevor Sie ihn abrufen können, können Sie dem Benutzer die Navigation ermöglichen Von der Seite aus ist synchrones Javascript nicht nur die beste Option.

$.ajax({
         url: "file.php",
         type: "POST",
         async: false,
         success: function(data) {
                // .....
         }
      });

Asynchronous (async: true) - Wo das Skript zulässt, dass die Seite weiter verarbeitet wird, und die Antwort verarbeitet, wenn und wann sie eintrifft. Wenn bei der Anforderung und/oder Übertragung der Datei etwas schief geht, kann Ihr Programm das Problem immer noch erkennen und beheben. Die asynchrone Verarbeitung vermeidet die Verzögerung, während der Abruf vom Server aufgrund Ihres Besuchs erfolgt Sie können weiterhin mit der Webseite interagieren und die angeforderten Informationen werden mit der Antwort verarbeitet, die die Seite aktualisiert, sobald sie ankommt.

$.ajax({
         url: "file.php",
         type: "POST",
         async: true,
         success: function(data) {
                    // .....
         }
       });

Schauen Sie sich auch diesen Artikel an

Asynchrone und synchrone AJAX - Aufrufe

71

Wenn Sie die Variable auf false setzen, wird der Haupt-Thread blockiert (verantwortlich für die Ausführung von JavaScript, das Rendern des Bildschirms usw.) und wartet, bis der XHR abgeschlossen ist.

Das ist fast immer eine schreckliche Idee. Benutzer mögen keine nicht reagierenden Benutzeroberflächen.

6
alex

async (Standardeinstellung: true)

Type: Boolean

Standardmäßig werden alle Anforderungen asynchron gesendet (d. H. Dies ist standardmäßig auf true gesetzt). Wenn Sie synchrone Anforderungen benötigen, setzen Sie diese Option auf false. Domänenübergreifende Anforderungen und dataType: "jsonp"-Anforderungen unterstützen keine synchrone Operation. Beachten Sie, dass synchrone Anforderungen den Browser vorübergehend sperren können, wodurch alle Aktionen deaktiviert werden, während die Anforderung aktiv ist. Ab jQuery 1.8 ist die Verwendung von async: false mit jqXHR ($.Deferred) veraltet. Sie müssen die Callback-Optionen "success/error/complete" anstelle der entsprechenden Methoden des jqXHR-Objekts wie jqXHR.done() verwenden.

Hier ist die Quelle .

0
Sabir Al Fateh