Неизвестное количество запросов $ .get;как эффективно цепляться? - PullRequest
1 голос
/ 03 апреля 2019

В БД у меня есть массив ключей, используемых для извлечения данных из других таблиц. Количество элементов в массиве варьируется.

Итак, я могу настроить несколько переменных на лету:

var keys = ["3958d9d0kdjcu4","49djs40dksnhjd","fjfjfjtnncxkshe"]
for(var i = 0; i < keys.length; i++) {
    window.keys[i] = i;
}

Но как связать неопределенное количество запросов $ .get?:

var A = $.get("db.url?id=key0");
var B = $.get("db.url?id=key1");
var C = $.get("db.url?id=key2");
// etc.

$.when( A, B, C).done(function(A, B, C) {
//...
});

1 Ответ

1 голос
/ 03 апреля 2019

Чтобы сделать это с неопределенным количеством запросов, поместите объекты jqXHR, возвращенные из $.get() (или $.ajax(), или $.post()), в массив, затем примените этот массив к $.when(), например так:

var requests = [];
for (var i = 0; i < requestsToBeMade; i++) {
  requests.push($.get(`db.url?id=key${i}`));
}

$.when.apply($, requests).done(function() {
  // do some work here...
});

Однако, хотя это будет работать, это не идеально.Вы не должны делать несколько запросов AJAX в такой быстрой последовательности, так как это создает необходимую нагрузку на сервер и не масштабируется.

Лучшим решением было бы объединить все отправляемые вами данные.и вместо этого сделайте один запрос.

...