Ich schreibe ein Tampermonkey-Skript für eine Webseite und versuche, Daten von anderen Seiten zu extrahieren.
Ich versuche, eine Funktion zu machen, die eine Schleife hat, die durch eine Liste geht, llcList
, und ruft Daten von Ajax-Methode GET ab, möchte aber warten, um eine Anforderung zu beenden, bevor zu zweit gehen.
Bonus wäre, wenn ich es einige zusätzliche Zeit warten lassen könnte.Wie durchlaufen GET/POST-Anrufe nacheinander (warten auf vorherige) Rückkehr?
Was soll passieren:
- Sendeauftrag für eine llcList [0]
- get Rückgabedaten, zu verarbeiten
- einige Zeit warten
- neue Anforderung für eine llcList [1] senden
Ist das möglich? Ich habe einige Methoden ausprobiert, jedes Mal, wenn eine Schleife alle Anfragen sendet, die nicht eine Sekunde auseinander liegen. :
function F_Company_LLC(){
for (i = 0; i < llcList.length;i++) {
if(llcList[i][2]=="lab"){
//run function 0
//break;
}
else if(llcList[i][2]=="shop"){
//run function 1
//break;
}
else{
F_GET_CompData(llcList, llcList[i][1],i,function(result){
console.log(result);
});
}
}}
function F_GET_CompData(F_GET_CompData_list, CompID, F_GET_CompData_row, callback){
$.ajax({
method : "GET",
url: base_link+"/company/edit_company/"+CompID,
beforeSend: function(){runningRequest++;},
success: function(data){
//data processing
runningRequest--;
},
error: function() {console.log("Get_ComData");}
});
callback(runningRequest);}
Vermeiden Sie im Allgemeinen Ajax-Aufrufe innerhalb von Schleifen. Recherchiere alternative Lösungen, bei denen du einen einzelnen Ajax-Aufruf mit genügend Informationen machst, um mehrere Datensätze zu aktualisieren, alle Datensätze, die mit mehreren Firmen-IDs übereinstimmen oder was auch immer du machen möchtest, etc .. Allerdings denke ich eine While-Schleife mit kompletten Callbacks oder Versprechungen zu bestimmen, wann es weitergehen könnte, könnte funktionieren? Aber was, wenn der Anruf nicht zurückkehrt und schließlich ausläuft, machen Sie weiter oder nicht? - Ich würde eher nach einer Lösung suchen, die mehrere Datensätze bei einem Aufruf zurückgibt. – Nope
Ich aktualisierte Code für einen Punkt 3. Jetzt Funktion LLC_Comp_Timer ausführen, inkrementieren Variable i um eins und warten auf 1 Sekunde vor der erneuten Ausführung – user9034751