Лучший подход к созданию последовательных запросов POST в Javascript - PullRequest
0 голосов
/ 01 ноября 2019

Итак, у меня есть массив, который содержит данные, которые необходимо отправить как часть полезной нагрузки для запросов POST, которые необходимо выполнить. Теперь они должны быть выполнены последовательно, так как мне нужно отобразить конкретную полезную нагрузку, затем результат (результатом является ответ, который возвращается после выполнения запроса POST с полезной нагрузкой), затем следующая полезная нагрузка, затем следующий результат ии так далее, на моей странице. Мне просто интересно, каков будет лучший подход для достижения этой цели. Итак, вот как я подхожу к этому на данный момент:

for (var i = 0; i < quotesList.length; i++) {
var response = $.ajax({
      type: "POST",
      url: url,
      data: JSON.stringify(quotesList[i]),
      success: add_to_page,
      },
      timeout: 300000,
      error: function(){
            console.log("Some Error!")
        },
      contentType: "application/json"
})

Очевидно, что здесь возникает проблема, что нет никаких гарантий с точки зренияполучить эту последовательность правильно, а также я не был совершенно уверен, как именно следить за полезной нагрузкой, так как при попытке добавить его в качестве части функции успеха я получаю только последний элемент в последнем (предположительно, последний запрос, который сработал)

1 Ответ

1 голос
/ 01 ноября 2019

Вы можете попробовать что-то вроде ниже.

let quotesListIndex = 0;
function sendAjaxCall() {
  if (quotesListIndex < quotesList.length) {
    var response = $.ajax({
      type: "POST",
      url: url,
      data: JSON.stringify(quotesList[quotesListIndex++]),
      success: function () {
        //... Add code here

        sendAjaxCall();     // Call the function again for next request      

      },
      timeout: 300000,
      error: function () {
        console.log("Some Error!")
      },
      contentType: "application/json"
    })
  } else {
    return;
  }
}

Добавить одну глобальную переменную для отслеживания индекса. и вызвать функцию рекурсивно. Как только индекс достигнет размера массива, вернитесь из функции.

...