In diesem Artikel geht es hauptsächlich um die Reihenfolge der Ausführung und Rückgabe mehrerer Ajax-Anfragen. Freunde, die sich für Ajax interessieren, können sich auf den Artikel über mehrere Ajax Beispiel-Diskussionsartikel zur Anforderungsausführung und Rückgabesequenz
Manchmal kann es in einem UnternehmenEreignisverarbeitungsprozess vorkommen, dass eine Schaltfläche angeklickt wird oder andere Ereignisse eine Aktion auslösen
Sie müssen mehr als zwei Ajax-Anfragen ausführen, müssen sich jedoch möglicherweise Gedanken über die Reihenfolge machen, in der die Ajax-Anfragen ausgeführt werden. Manchmal gibt es ein Problem mit der Reihenfolge der Ajax-Anfragen, was zu verschiedenen Problemen führen kann
Zum Beispiel gibt es zwei Ajax-Ereignisse, nämlich ajax1 und ajax2
Eine Methode namens main ruft den Ausführungseingang auf
1.
function main(){ ajax1(data,callback); ajax2(data,callback); }
Die Antwort ist nicht unbedingt. Natürlich müssen wir in Situationen, in denen es mehrere Ajax-Anfragen gibt, die keine Ausführungs- und Rückgabereihenfolge erfordern, nicht zu viel darüber nachdenken, wer zuerst ausführt und wer zuerst zurückkehrt.
Was wäre, wenn wir die Ausführungsreihenfolge und die Reihenfolge berücksichtigen? Rückkehr von Ajax-Ereignissen
Wenn dies der Fall ist, wie löst man die Ausführungsrückgabereihenfolge von Ajax-Ereignissen
Natürlich sollten Sie jetzt an die Ajax
Rückruffunktion denken. Gut , das ist eine gute IdeeDrücken Sie jetzt darauf. Ändern Sie Ihre Denkweise und Herangehensweise wie folgt
function main(){ ajax1( data , ajax2( ) ); }
Vielleicht, aber in manchen Fällen kann es unbequem sein, so zu schreiben. Natürlich kann es sein, dass Sie nicht darauf stoßen, aber ich bin auf eine ganz besondere Situation gestoßen
Zum Beispiel die folgende Möglichkeit
function main(){ aa(data); ajax1(data,callback); } function aa(val){ var data=val+"";//这里是对传入数据进行修改,封装,当然这里是随便写的 ajax2(data,ajax2Callback); } function ajax2Callback(){ console.log("=====回调函数ajax2Callback()执行========"); console.log("=====这里正在执行ajax执行完毕后必须执行的操作========"); }
Denken Sie sorgfältig nach und Sie werden die Antwort finden
Nein!
Nun, wie man dieses Problem löst. Wie man sicherstellt, dass Ajax2 vor Ajax1 fertig ist.
Natürlich, das ist nicht einfach, setzen Sie den Aufruf von Ajax1 an das Ende der Ajax2-Methode Rückrufmethode ajax2Callback Face
Ich muss zugeben, dass dies eine Lösung ist, aber wenn es sich um ein sehr altes Projekt handelt, ist es schon seit mehreren Jahren ein Projekt. Die darin enthaltenen Aufrufe sind kompliziert, daher sollten Sie versuchen, die vorherigen zugrunde liegenden Methoden nicht zu ändern. Vielleicht lösen Sie sie einfach, um diesen Fehler zu beheben, und Sie können mehrere Fehler verursachen.
Gibt es eine gute Möglichkeit? Gehen und es lösen?
Sicher, lösen Sie es einfach, aber Menschen mit unzureichender Berufserfahrung denken selten an alles auf einmal und werden die vorherigen Methoden nur zur schnellen Lösung des Problems anwenden, egal was passiert.
Und ich habe eine relativ dumme Methode übernommen, und es gibt immer noch einige Probleme. Ich habe setTimeOut
timer verwendet, um es einmal auszuführen, aber wer weiß, dass dies Ajax sein wird ausgeführt? Wie lange ist es her? Erinnern Sie sich noch daran, das
Array zu sortieren? Sortierung. Die Antwort wird unten angezeigt Der Code erklärt alles:
function main(){ var temp=ajax2Callback; ajax2Callback=function(){ temp(); ajax1(data,callback); } aa(data); ajax2Callback=temp; } function aa(val){ var data=val+"";//这里是对传入数据进行修改,封装,当然这里是随便写的 ajax2(data,ajax2Callback); } function ajax2Callback(){ console.log("=====回调函数ajax2Callback()执行========"); console.log("=====这里正在执行ajax执行完毕后必须执行的操作========"); }
Sehen Sie es sich an, Ja, ist das nicht sehr interessant? Die Methode der untersten Ebene wird nicht geändert, sondern nur die Hauptmethode. Ist sie der Array-Sortierung nicht sehr ähnlich, wenn wir die Blasensortierung verwenden?
Operator, um die Größe zuzuweisen, oder Sie können sogar faul genug sein, die Arrays des Systems direkt aufzurufen. sort()-Methode. Natürlich ist das alles möglich
Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird für alle hilfreich sein! !
function changeSearchContactType(obj) { if (!obj) { return; } var contactType = obj.value; var origRenderTemplate = renderTemplate; renderTemplate = function(data) { origRenderTemplate(data); ajaxAnywhere.submitAJAX('setSearchContactType'); } var result = TemplateHelper.changeSearchContactTemplate(contactType, contactUIUID); renderTemplate = origRenderTemplate; return result; }
Verwandte Empfehlungen:
AJax implementiert ähnliche Funktionen wie die Baidu-Suchleiste
Umfassendes Verständnis der Ajax-Serie Nr. 1 Kapitel XHR-Objekt
JSON-Datenspeicherformat für Ajax-Interaktion mit Benutzern
Das obige ist der detaillierte Inhalt vonEine Beispieldiskussion zum Thema Ausführung und Rückgabesequenz mehrerer Ajax-Anfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!