muszę dokonać sekwencyjnych asynchronicznych żądań AJAX przy ograniczonych strumieni. Jak na razie mogę zajmować tylko jeden strumień na serwerze sieciowym, więc mogę tylko wykonać jedno zapytanie ajaxowe w czasie.Jak zrobić sekwencyjnych asynchronicznych żądań AJAX z danej liczby strumieni
Mam następujących funkcji, która pomaga mi, kiedy wolno mi użyć tylko jeden strumień naraz.
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
}
}
powiedzieć, jeśli mam trzy ajax funkcji pomocniczych
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
}
następujące połączenia zapewnia, że żaden wniosek więcej niż 1 ajax jest wykonany z tego klienta
initiateChain(getGadgets, getBooks, getDeals);
Teraz muszę poprawić initiateChain do obsługi dowolnej liczby strumieni. Powiedzmy, że mogę użyć 2 lub n liczby strumieni, chciałbym znać pomysły, aby to zrobić bez zmiany funkcji pomocnika ajax getGadgets, getDeals, getDeals.
Krótko mówiąc, mam zestaw funkcji, N, w tym przypadku getGadgets, getDeals i getDeals (| N | = 3), z których każdy potrzebuje połączenia z serwerem sieciowym. Obecnie mogę wykonać tylko jedno żądanie naraz, dlatego funkcja initiate wywołuje kolejno trzy metody. Gdybym miał dostęp do połączeń M, chciałbym wykonać | N | działa równolegle (maksymalnie do M).
Na czym dokładnie polega twoje pytanie? – jfriend00
Jak wspomniałem Mam zestaw funkcji, N, w tym przypadku getGadgets, getDeals i getDeals (| N | = 3), że każdy potrzebuje połączenia z serwerem WWW. Obecnie mogę wykonać tylko jedno żądanie naraz, dlatego funkcja initiate wywołuje kolejno trzy metody. Gdybym miał dostęp do połączeń M, chciałbym wykonać | N | działa równolegle (maksymalnie do M). – harsha