È necessario effettuare richieste ajax asincrone sequenziali con flussi limitati. A partire da ora ho il permesso di occupare un solo stream sul web server in modo da poter fare solo una richiesta ajax alla volta.Come eseguire richieste Ajax asincrone sequenziali con un determinato numero di flussi
Ho la seguente funzione che mi aiuta quando sono autorizzato a utilizzare un solo flusso alla volta.
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
}
}
dire se ho tre funzioni di aiuto ajax
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
}
seguenti chiamata assicura che nessuna richiesta più di 1 ajax è fatto da questo client
initiateChain(getGadgets, getBooks, getDeals);
ora ho bisogno di migliorare initiateChain supportare un numero arbitrario di flussi. Supponiamo che io possa utilizzare il numero 2 o n di stream che mi piacerebbe conoscere le idee per farlo senza cambiare le funzioni di helper di ajax getGadgets, getDeals, getDeals.
In breve, ho un set di funzioni, N, in questo caso getGadgets, getDeals e getDeals (| N | = 3) che richiedono ciascuna una connessione al server web. Attualmente, posso eseguire solo una richiesta alla volta, quindi la funzione initiateChain chiama i tre metodi in sequenza. Se avessi accesso alle connessioni M, vorrei eseguire | N | funziona in parallelo (fino a un massimo di M).
Qual è esattamente la tua domanda? – jfriend00
Come ho detto ho un set di funzioni, N, in questo caso getGadgets, getDeals e getDeals (| N | = 3) che richiedono ciascuna una connessione al server web. Attualmente, posso eseguire solo una richiesta alla volta, quindi la funzione initiateChain chiama i tre metodi in sequenza. Se avessi accesso alle connessioni M, vorrei eseguire | N | funziona in parallelo (fino a un massimo di M). – harsha