Ajax-Synchronisation bedeutet, dass beim Laden des JavaScript-Codes in das aktuelle Ajax das Laden des gesamten Codes auf der Seite gestoppt wird und sich die Seite in einem angehaltenen Animationszustand befindet. Nach der Ausführung des Ajax befindet sich die Seite in einem Zustand Status der angehaltenen Animation, und der Code wird weiterhin ausgeführt. Ajax Asynchron bedeutet, dass auch andere Codes ausgeführt werden können, wenn der aktuelle Ajax-Code ausgeführt wird.
Die Betriebsumgebung dieses Artikels: Windows 10-System, Javascript 1.8.5 und HTML5-Version, Dell G3-Computer.
(2) Asynchron bedeutet, dass andere Codes ausgeführt werden können, während der aktuelle AJAX-Code ausgeführt wird.
jquerys async:false, dieses Attribut
standardmäßig true: asynchron, false: synchron.
Beispiele sind wie folgt:
$.ajax({ url: prefix + "/exportById", data: {ids:ids}, type: 'POST', traditional: true, cache:false, async:false, success: function (result) { if (result.code == web_status.SUCCESS) { window.location.href = ctx + "common/download?fileName=" + result.msg + "&delete=" + true; } else { alert("导出失败"); } } });
Wie implementiert AJAX synchrone Anfragen?
Ajax-Anfragen werden in synchrone Anfragen und asynchrone Anfragen unterteilt, aber die Standardanfragen sind asynchrone Anfragen. Wenn wir also Ajax für synchrone Anfragen verwenden möchten, wie sollten wir diese synchrone Anfrage implementieren? Der folgende Artikel stellt Ihnen die Implementierung der Ajax-Synchronisierungsanfrage vor. Freunde in Not können darauf verweisen.
Zunächst sollten wir wissen, dass die Synchronisierung ein einzelner Thread ist und der Code nacheinander ausgeführt wird. Wenn der js-Code in die aktuelle synchrone Ajax-Anfrage geladen wird, werden alle anderen Codes auf der Seite nicht mehr geladen und die Seite wird geladen in einem Zustand der angehaltenen Animation, bis die Anforderung abgeschlossen ist. Nach Abschluss der Ausführung werden andere Anforderungen ausgeführt.
Zweitens sollten wir wissen, dass Ajax entsprechend dem Wert von async in zwei Anforderungsmethoden unterteilt ist: Wenn der Wert von async wahr ist, handelt es sich um die asynchrone Anforderungsmethode ist falsch, es handelt sich um die synchrone Anforderungsmethode. Um eine Ajax-Synchronisierungsanforderung zu implementieren, müssen Sie nur den Wert von async auf false setzen.
$.ajax( type:“POST”/“GET” url:"", data:{}, dataType:"json", async:false, //同步 success:function(response){ } );
Verstehen 1:
AJAX ist in zwei Ausführungsmethoden unterteilt: synchron (async = false) und asynchron (async = true); im W3C-Tutorial wird die asynchrone Ausführung empfohlen Lassen Sie uns den Unterschied zwischen Synchronisation und Asynchronität unterscheiden:
Asynchron: Im asynchronen Modus muss möglicherweise Code ausgeführt werden, nachdem wir AJAX zum Senden der Anforderung verwendet haben. Zu diesem Zeitpunkt hat der Server möglicherweise aus verschiedenen Gründen nicht auf unsere Anfrage geantwortet, aber da wir die asynchrone Ausführung verwenden, wird der verbleibende Code in allen Funktionen, die AJAX-Anfragecode enthalten, weiterhin ausgeführt. Wenn wir das Anforderungsergebnis zur Verarbeitung an eine andere JS-Funktion übergeben, ist es so, als würden zwei Threads gleichzeitig ausgeführt.
Synchronisation: Im synchronen Modus gibt es, nachdem wir AJAX zum Senden der Anfrage verwendet haben, noch Code, der später ausgeführt werden muss. Wir übergeben die Serverantwort auch zur Verarbeitung an eine andere JS-Funktion, aber die Codeausführungssituation ist zu diesem Zeitpunkt ist: auf dem Server Wenn keine Antwort vorliegt oder die JS-Funktion, die das Antwortergebnis verarbeitet, nicht verarbeitet und zurückgegeben wurde, kann der verbleibende Code der Funktion, der den Anforderungscode enthält, nicht ausgeführt werden. Genau wie ein einzelner Thread wechselt er nach dem Senden der Anforderung in den Blockierungsstatus und der verbleibende Code wird erst dann weiter ausgeführt, wenn er den Blockierungsstatus erreicht.
Wie wähle ich den synchronen oder asynchronen Modus? Um diese Frage zu beantworten, können wir sie durch die folgenden möglichen Fragen beantworten:
Nach dem Senden der AJAX-Anfrage müssen wir die Antwortergebnisse des Servers weiterhin verarbeiten, wenn wir den asynchronen Anforderungsmodus verwenden und die Verarbeitung nicht übergeben Die Ergebnisse werden von einer anderen JS-Funktion verarbeitet. Zu diesem Zeitpunkt kann folgende Situation auftreten: Die Antwort auf die asynchrone Anforderung ist noch nicht eingetroffen und die Funktion hat die Ausführung der Return-Anweisung abgeschlossen, was dazu führt, dass das Rückgabeergebnis eine leere Zeichenfolge ist.
Verstehen 2:Synchronisation: Eine Anfrage senden, auf die Rückgabe warten und dann die nächste Anfrage sendenAsynchron: Eine Anfrage senden, nicht auf die Rückgabe warten und die nächste Anfrage jederzeit senden
Durch die Synchronisierung können Deadlocks vermieden werden. Die Sperre, das Lesen schmutziger Daten, wird im Allgemeinen beim Teilen einer bestimmten Ressource verwendet. Wenn jeder über Änderungsberechtigungen verfügt und gleichzeitig eine Datei ändert, ist es möglich, dass eine Person den Inhalt einer anderen Person liest Die Person wurde gelöscht und es tritt ein Fehler auf. Es wird der Reihe nach geändert.
Asynchron kann die Effizienz verbessern. Heutzutage sind CPUs Dual-Core- oder Quad-Core-Prozessoren. Wenn Sie asynchron arbeiten, müssen Sie natürlich sicherstellen, dass sie gleichzeitig verarbeitet werden können.
Der größte Unterschied zwischen synchron und asynchron ist. Man muss warten, man muss nicht warten.
Das Versenden von Textnachrichten ist beispielsweise ein asynchrones Beispiel. Der Status des Empfängers ist dem Initiator egal. Es muss nicht auf die Rückmeldung des Empfängers gewartet werden und die nächste Übertragung kann durchgeführt werden.
Telefon ist ein Beispiel für Synchronisierung. Der Initiator muss auf den Empfänger warten und die Kommunikation beginnt erst, wenn der Anruf verbunden ist. Sie müssen auf die Rücksendeinformationen vom Empfänger warten
Die von uns häufig diskutierten Synchronisierungsprobleme treten meist bei Problemen bei der Datenfreigabe in Multithread-Umgebungen auf. Das heißt, wenn mehrere Threads auf dieselbe Ressource zugreifen müssen, müssen sie in einer bestimmten Reihenfolge vorliegen, um sicherzustellen, dass nur ein Thread zu einem bestimmten Zeitpunkt auf die Ressource zugreifen kann. Wenn asynchron verwendet wird, werden die laufenden Ergebnisse des Programms geändert unberechenbar sein. Daher müssen in diesem Fall die Daten synchronisiert werden, dh nur ein Prozess kann auf die Ressource zugreifen und andere Threads müssen warten.
Zu den Mechanismen zur Erzielung einer Synchronisierung gehören hauptsächlich kritische Abschnitte, Mutexe, Semaphoren und Ereignisse.
Kritischer Abschnitt: Greifen Sie über die Serialisierung von Multithreads auf öffentliche Ressourcen oder einen Code zu, was schnell ist und sich zur Steuerung des Datenzugriffs eignet. Wenn mehrere Threads versuchen, auf öffentliche Ressourcen zuzugreifen, werden andere Threads, die versuchen, auf öffentliche Ressourcen zuzugreifen, angehalten und warten, bis sie den kritischen Abschnitt verlassen und der kritische Abschnitt freigegeben wird, können andere Threads ihm zuvorkommen.
Mutex: übernimmt einen sich gegenseitig ausschließenden Objektmechanismus. Nur Threads, die sich gegenseitig ausschließende Objekte besitzen, haben die Berechtigung, auf öffentliche Ressourcen zuzugreifen. Da es nur ein sich gegenseitig ausschließendes Objekt gibt, ist gewährleistet, dass nicht mehrere Threads gleichzeitig auf öffentliche Ressourcen zugreifen. Mutex kann nicht nur die sichere gemeinsame Nutzung öffentlicher Ressourcen derselben Anwendung realisieren, sondern auch erkennen, dass die sichere gemeinsame Nutzung öffentlicher Ressourcen verschiedener Anwendungen komplizierter ist als der kritische Abschnitt. Denn durch die Verwendung des gegenseitigen Ausschlusses kann nicht nur eine sichere gemeinsame Nutzung von Ressourcen zwischen verschiedenen Threads derselben Anwendung erreicht werden, sondern auch eine sichere gemeinsame Nutzung von Ressourcen zwischen Threads verschiedener Anwendungen.
Semaphor: Es ermöglicht mehreren Threads, gleichzeitig auf dieselbe Ressource zuzugreifen, muss jedoch die maximale Anzahl von Threads begrenzen, die gleichzeitig auf diese Ressource zugreifen können. Die Art und Weise, wie das Semaphorobjekt Threads synchronisiert, unterscheidet sich von den vorherigen Methoden. Das Signal ermöglicht mehreren Threads die gleichzeitige Nutzung gemeinsam genutzter Ressourcen, was dem PV-Vorgang im Betriebssystem entspricht. Es gibt die maximale Anzahl von Threads an, die gleichzeitig auf gemeinsam genutzte Ressourcen zugreifen können. Es ermöglicht mehreren Threads, gleichzeitig auf dieselbe Ressource zuzugreifen, muss jedoch die maximale Anzahl von Threads begrenzen, die gleichzeitig auf diese Ressource zugreifen können.
Ereignisse: Halten Sie die Thread-Synchronisierung durch Benachrichtigungsvorgänge aufrecht und erleichtern Sie außerdem den Prioritätsvergleich mehrerer Threads.
【Ähnliche Tutorial-Empfehlung: AJAX-Video-Tutorial】
Das obige ist der detaillierte Inhalt vonWas ist Ajax synchron und asynchron?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!