Heim  >  Artikel  >  Web-Frontend  >  Eine Beispieldiskussion zum Thema Ausführung und Rückgabesequenz mehrerer Ajax-Anfragen

Eine Beispieldiskussion zum Thema Ausführung und Rückgabesequenz mehrerer Ajax-Anfragen

韦小宝
韦小宝Original
2017-12-31 10:15:111754Durchsuche

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 Unternehmen

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


Wenn wir es gemäß der obigen Methode ausführen, scheint es, dass Ajax1 zuerst und Ajax2 später ausgeführt wird. Wenn Sie nicht sorgfältig darüber nachdenken, werden einige Leute denken, dass zuerst Ajax1 und dann Ajax2 ausgeführt wird. Ist das wirklich der Fall?


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


Sieht so aus, finden Sie nicht auch ein sehr gutes Wolltuch? Wirklich? Ist es wirklich sehr gut?


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执行完毕后必须执行的操作========");
}


Glauben Sie, dass diese Situation Ajax2 erfüllen kann, damit es zuerst ausgeführt und zuerst in Ajax1 abgeschlossen wird?


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?

oder Schnellsortierung, ist eine temporäre Variable zum Speichern des Werts festgelegt? Beim Sortieren und Vergleichen von Größen müssen Sie natürlich keine temporären Variablen einrichten. Verwenden Sie einfach einen ^

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn