JavaScript、React - 发送多个同时的 ajax 调用

标签 javascript ajax reactjs redux axios

在我的 React 应用程序中,我有一个参数数组(例如一些 ID),它们应该用作 ajax 调用队列的参数。问题是数组可能包含 1000 多个项目,如果我只是使用 forEach 循环递归地进行 ajax 调用,浏览器页面最终会在每个请求得到解决之前停止响应。

是否有一种技术/库可以允许发送 ajax 请求,例如,一次异步发送 5 个请求,并且仅当这些请求完成后,才继续接下来的 5 个请求?

跟进问题:

React - Controlling multiple Ajax Calls

React - Controlling AJAX calls made to the server

最佳答案

好的,让我们解决一些问题。在 JavaScript 中,AJAX 请求本质上是异步的。您选择在您的实现中使它们在某种程度上同步。

您需要做的是有一些请求数组,一次从中弹出 X 个结果,等待它们返回,然后重复。

let ids = [a lot of ids here]

while (ids.length > 0) {

   let c = ids.splice(0, 5)
   let promises = []
   for (let i = 0; i < c.length; i++) {
      promises.push(fetch("someURL").then(function() {}))
   }
   Promise.all(promises)
}

将同时执行 5 个请求,等待它们完成,然后获取下一部分 ID

关于JavaScript、React - 发送多个同时的 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45988142/

相关文章:

IE11 中的 JavaScript 给我脚本错误 1003

javascript - 通过 JSON 中的多个嵌套对象进行映射

reactjs - Draft.js (react-draft-wysiwyg) : text update from the outside of the Editor component does not work

javascript - mouseover 和 mouseout 事件的奇怪行为

javascript - JS 中带参数的闭包

javascript - JSON 解析错误 : Unable to parse JSON string

php - MySQL 重复条目造成内部服务器错误

javascript - ajax调用中的 Accordion Jquery和页面高度

javascript - 如何在Js中向所有Tree Array的对象添加一个项目?

javascript - 如何在登录 Firebase 时获取用户信息