以JavaScript发出顺序POST请求的最佳方法

问题描述 投票:0回答:1

因此,我有一个数组,其中包含需要作为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"
})

显然,这里出现的问题是不能保证正确地执行该序列,而且我也不太确定如何准确跟踪有效负载,因为试图将其添加为成功函数的一部分仅使我获得了last中的最后一个元素(大概是触发了最后一个请求)

javascript jquery xmlhttprequest fetch-api
1个回答
0
投票

您可以尝试以下类似方法。

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;
  }
}

添加一个全局变量以跟踪索引。然后递归调用函数。一旦索引达到数组大小,然后从函数返回。

© www.soinside.com 2019 - 2024. All rights reserved.