Ich muss sequentielle asynchrone Ajax-Anfragen mit begrenzten Streams machen. Ab jetzt darf ich nur noch einen Stream auf dem Webserver belegen, so dass ich nur eine Ajax-Anfrage machen kann.So führen Sie sequenzielle asynchrone Ajax-Anfragen mit einer bestimmten Anzahl von Streams durch
Ich habe folgende Funktion, die mir hilft, wenn ich nur einen Strom zu einer Zeit verwenden darf.
function initiateChain() {
var i = 0;
var tasks = arguments;
var callback = function() {
i += 1;
if (i != tasks.length) {
tasks[i](callback); //block should call callback when done otherwise loop stops
}
}
if (tasks.length != 0) {
tasks[0](callback); //initiate first one
}
}
sagen, wenn ich drei Ajax-Helferfunktionen haben
function getGadgets(callback) {
//ajax call
callback(); // I call this in complete callback of $.ajax
}
function getBooks(callback) {
//ajax call
callback(); // I call this in complete callback of $.ajax
}
function getDeals(callback) {
//ajax call
callback(); // I call this in complete callback of $.ajax
}
folgende Aufruf stellt sicher, dass nicht mehr als 1 Ajax-Anforderung von diesem Client gemacht wird
initiateChain(getGadgets, getBooks, getDeals);
Jetzt muss ich initiateChain verbessern um eine beliebige Anzahl von Streams zu unterstützen. Sagen wir, ich darf 2 oder n Streams verwenden, von denen ich gerne wissen möchte, dass sie dies tun, ohne die ajax-Hilfsfunktionen getGadgets, getDeals und getDeals zu ändern.
Kurz gesagt, ich habe eine Reihe von Funktionen, N, in diesem Fall getGadgets, getDeals und getDeals (| N | = 3), die jeweils eine Verbindung zum Webserver benötigen. Momentan kann ich nur eine Anfrage gleichzeitig ausführen, also ruft die initiateChain-Funktion die drei Methoden nacheinander auf. Wenn ich Zugriff auf M-Verbindungen hätte, würde ich gerne | N | ausführen funktioniert parallel (bis zu einem Maximum von M).
Was genau ist Ihre Frage? – jfriend00
Wie ich erwähnt habe, habe ich eine Reihe von Funktionen, N, in diesem Fall getGadgets, getDeals und getDeals (| N | = 3), die jeweils eine Verbindung zum Webserver benötigen. Momentan kann ich nur eine Anfrage gleichzeitig ausführen, also ruft die initiateChain-Funktion die drei Methoden nacheinander auf. Wenn ich Zugriff auf M-Verbindungen hätte, würde ich gerne | N | ausführen funktioniert parallel (bis zu einem Maximum von M). – harsha