javascript - 在 Javascript 中发出顺序 POST 请求的最佳方法

标签 javascript jquery xmlhttprequest fetch-api

所以我有一个数组,其中包含需要作为需要发出的 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"
})

显然,这里出现的问题是无法保证序列正确,而且我不太确定如何准确地跟踪有效负载,因为尝试将其添加为成功的一部分函数只获取最后一个元素(大概是最后一个触发的请求)

最佳答案

您可以尝试如下所示的操作。

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

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

关于javascript - 在 Javascript 中发出顺序 POST 请求的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58655835/

相关文章:

javascript - 如何在执行 Redirect() 后显示 "Saved!"消息......?

javascript - 如何获取div元素的子元素

javascript - 为什么在 JavaScript 中返回时要使用括号?

javascript - 鼠标移动时增加两个 div 高度

javascript - 寻找jQuery插件(或代码)以在鼠标悬停时自动滚动Carousel项目。

javascript - 如何使用 Bootstrap 验证?

javascript - 定位由 d3.js 创建的 div

ajax - Axios 拦截器不会在页面加载时拦截

javascript - 如何将数据主体发送到 XMLHttpRequest,看起来像这样?

javascript - req.body.username 未输出正确的值