如何使用多个XMLHttpRequest?

2024-04-21

我需要从 8 个不同的 URL 获取 8 个 JSON。我将必须更改的查询字符串存储在数组中,并使用 for 循环遍历它。这是我的代码:

var index = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];

var request = new XMLHttpRequest();

for (var i = 0; i < index.length; i++) {

    var url = "https://wind-bow.glitch.me/twitch-api/channels/" + index[i];

    request.open("GET", url);
    request.onload = function() {
        var data = JSON.parse(request.responseText);
        console.log(data);
    }
    request.send();
}

到目前为止,我只想在控制台上显示每个 JSON。我没有收到任何错误,但我只能显示带有最后一个索引项的最后一个 JSON (noobs2ninjas)。

有人能给我解释一下为什么吗?如何获取我需要的所有 JSON?

Thanks


有人能给我解释一下为什么吗?如何获取我需要的所有 JSON?

为了发送第二个请求,您需要等待第一个请求完成。因此,如果您有兴趣以数组顺序获取响应,您可以在每个数组元素上循环,并且只有当您获得响应时,才可以在其余元素上循环:

var index = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
var request = new XMLHttpRequest();
(function loop(i, length) {
    if (i>= length) {
        return;
    }
    var url = "https://wind-bow.glitch.me/twitch-api/channels/" + index[i];

    request.open("GET", url);
    request.onreadystatechange = function() {
        if(request.readyState === XMLHttpRequest.DONE && request.status === 200) {
            var data = JSON.parse(request.responseText);
            console.log('-->' + i + ' id: ' + data._id);
            loop(i + 1, length);
        }
    }
    request.send();
})(0, index.length);

相反,如果您想完全异步(以并发方式)执行所有请求,则request变量必须在循环内声明和作用域。一request对于每个数组元素。你有一些可能性,例如:

  • using let https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let
  • 声明回调
  • using IIFE https://en.wikipedia.org/wiki/Immediately-invoked_function_expression
  • 使用数组.forEach() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach而不是 for 循环
var index = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];


for (var i = 0; i < index.length; i++) {

    var url = "https://wind-bow.glitch.me/twitch-api/channels/" + index[i];

    let request = new XMLHttpRequest();
    request.open("GET", url);
    request.onreadystatechange = function() {
        if(request.readyState === XMLHttpRequest.DONE && request.status === 200) {
            var data = JSON.parse(request.responseText);
            console.log('-->' + data._id);
        }
    }
    request.send();
}

根据 @Wavesailor 评论,为了在调用结束时进行数学计算:

var index = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
var request = new XMLHttpRequest();
(function loop(i, length, resultArr) {
    if (i>= length) {
        console.log('Finished: ---->' + JSON.stringify(resultArr));
        return;
    }
    var url = "https://wind-bow.glitch.me/twitch-api/channels/" + index[i];

    request.open("GET", url);
    request.onreadystatechange = function() {
        if(request.readyState === XMLHttpRequest.DONE && request.status === 200) {
            var data = JSON.parse(request.responseText);
            console.log('-->' + i + ' id: ' + data._id);
            resultArr.push(data._id);
            loop(i + 1, length, resultArr);
        }
    }
    request.send();
})(0, index.length, []);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用多个XMLHttpRequest? 的相关文章

  • 在 JavaScript 函数中加载图像

    我有获取图像像素颜色的功能 function getImage imgsrc var img img src imgsrc var imageMap new Object img load function var canvas
  • 返回上一页

    我正在使用表格来 评价 页面 此表单将数据 发布 到其他地方的 php 脚本 我只是想在处理表单后显示一个链接 这将使用户返回到上一页 我可以在 php 脚本中使用 javascript 来执行此操作吗 GF 您可以使用链接来调用histo
  • 如何在 mongodb 聚合管道中使用 Javascript 对象?

    我有一个 JS 对象norm我想在 mongo 聚合管道中使用它 如下所示 var norm 1 1 2 1 16 3 1 413 4 1 622 5 1 6 6 1 753 7 3 001 8 2 818 9 3 291 10 2 824
  • DbGeography 多边形到 JSON

    我将 DbGeography 多边形存储在数据库中 我的控制器从数据库获取多边形 我需要将它们转换为 JSON var polygons db Areas Where x gt x Type type Select x gt new Vie
  • 调用类实例方法 onclick javascript

    我有一个 javascript 文件 其中包含包含方法函数的类 我想知道如何从 onClick 事件调用类实例方法 function MyClass this instanceData Display Me this DisplayData
  • Visual Studio 改变 Ctrl-K-D 的工作方式

    In Visual Studio I m using 2012 is there any way of editing the way that Ctrl K D combinations handles its Auto Formatti
  • 如何在 jQuery 中将标题转换为 URL slug?

    我正在 CodeIgniter 中开发一个应用程序 我试图在表单上创建一个字段来动态生成URL slug 我想做的是删除标点符号 将其转换为小写 然后用连字符替换空格 例如 Shane s Rib Shack 将变成 shanes rib
  • 使用 Jquery 传递隐藏字段值

    我有一个正常的hidden Input field我在哪里生成random string 我需要将其附加到我尝试将数据发布到另一个页面的 URL 中 我已经做到了这一点并且效果很好 url Upload html field1 newval
  • 为什么函数声明在不同浏览器中的处理方式不同?

    虽然我在谷歌中找不到对此的引用 但我熟悉这样一个事实 在 javascript 中 全局函数声明在执行任何代码之前都会被解释 换句话说 这工作得很好 f function f 但是 我注意到 chrome 和 firefox 对全局函数声明
  • 修改 Twitter 帖子上可编辑 Div 的内容

    我正在编写一个 chrome 扩展 它可以帮助用户在 Twitter 上输入内容 当在 twitter 上写推文时 twitter 会打开一个可编辑的 div 容器 当用户输入内容时 twitter 大概正在使用某些网络框架 会生成子 di
  • Next.js:错误:React.Children.only 期望接收单个 React 元素子元素

    我有一个名为Nav inside components目录及其代码如下所示 import Link from next link const Nav gt return div a Home a a About a div export d
  • Socket IO 服务器到服务器

    服务器是否可以使用 Socket IO 连接到另一个服务器并被视为客户端 并让它加入房间 接收 io sockets in lobby emit 和更多 第一个服务器也在监听连接 消息 嘿 Brad 下面是我的完整 js 应用程序 供参考
  • 如何使用Gson仅从Json反序列化某些特定字段?

    我有以下 JSON 字符串 channel bvmt initValues data value instrumentIds TN0007250012 TN0007500010 instruments mnemonic ADWYA marc
  • 在javascript中创建图像的缩略图方块(不丢失纵横比)

    我正在制作一个客户端拖放文件上传脚本作为书签 在上传之前 我使用 File API 将图像读取为 base64 格式并将其显示为缩略图 This is how my thumbnails look like I want them to l
  • 在 React Web 应用程序中使用 createjs-soundjs

    我想用https www npmjs com package createjs soundjs https www npmjs com package createjs soundjs在 React Web 应用程序上播放声音 我正常安装了
  • 绘制多边形

    我正在使用 Google Maps API V3 根据路径绘制多边形 该路径是随机未排序坐标点 LatLng 的数组 这会产生以下形状 Polylines intersect Problem 由于多边形的形状取决于路径中点的顺序 因此如何对
  • Vue-Router 抽象父路由

    我正在尝试将当前网站迁移到 vuejs 站点地图必须是 login signup password reset browse search dozens of other routes 由于其中一些路线共享大量 fx 因此我将它们设为父路线
  • 如何为 jQuery 插件设置私有变量?

    我想创建一个简单的插件 它使用元素的文本作为默认值 或者您可以在调用插件时设置此值 但是 如果我不设置该值 并为多个元素调用插件 则默认值会成倍增加 function fn reText function options var setti
  • PostgreSQL:使用for循环迭代表行,根据当前行检索列值

    我有以下2张表 CREATE TABLE salesperson t salespersonid numeric 4 0 NOT NULL salespersonname character varying 25 salespersonte
  • 如何获取符号名称(文字)?

    以下情况 var myVehicle brand Tesla var isMoving Symbol var currentStatus Symbol myVehicle isMoving true myVehicle currentSta

随机推荐

  • 为什么 [CSS 功能] 在 [浏览器] 中不起作用,但在其他浏览器中起作用?

    我尝试使用transition在 Firefox 15 上 它不起作用 即使它可以在其他版本的 Firefox 以及 Chrome 和 Safari 等其他浏览器上运行 当我使用 Firefox 的检查器查看属性时transition被删除
  • 如何禁用 Silverlight DataGrid 验证页脚?

    我面临以下问题 我正在使用验证摘要弹出窗口来在页面上显示错误 并且我有一个可编辑的 DataGrid 所以有2个问题 1 如果 DataGrid 单元格中出现验证错误 则 DataGrid 验证会重复验证错误 例如 DataGrid 包含
  • 使用Rvest登录网站抓取时出现403错误

    我试图在需要登录的网站上抓取页面 但不断收到 403 错误 我已经修改了我网站的这两篇文章中的代码 使用rvest或httr登录网页上的非标准表单 https stackoverflow com questions 28418770 usi
  • 获取 Sublime Text 3 上的所有范围名称

    我正在创建一个插件ST3 http www sublimetext com 并需要所有定义范围的列表 我知道打ctrl alt shift p在状态栏中显示当前范围 但我无法对每个文件扩展名执行此操作 Edit 除了简单的 tmLangua
  • 使用反向路径的 CGContextClip()

    我想在我的作品上剪下图画CGContext但我需要它只是相反 即我想使用添加几个矩形到我的剪切路径CGContextAddRect 并且剪切应该以这样的方式完成 我添加到剪切路径的所有矩形都不受任何绘图操作的影响 通常情况下 情况正好相反
  • 处理 Flask url 创建中的空格

    在我正在开发的 Flask 应用程序中 我使用美国州名作为 url 结构的一部分 州名称是从 python 字典中提取的 该字典将州缩写与其各自的专有名称链接起来 例如 state dict Alabama AL Alaska AK 当状态
  • 使用 Binder 从 Native cpp 应用程序中捆绑 Intent

    我正在尝试从本机 cpp 代码调用意图 基本上 根据我的理解 我必须编写一个 Parcel 来匹配 Frameworks base core java android app ActivityManagerNative java 中的确切反
  • javascript中的指针和数组类[重复]

    这个问题在这里已经有答案了 有什么办法可以通过使用指针来缩短这段代码吗 我需要创建一个与给定数组类 unshift shift push 和 pop 具有基本相同功能但名称不同的类 var makeDeque function var a
  • ui-select 多重选择显示选项的速度非常慢

    我遇到了这个问题 我不知道如何解决 我用过一个ui select 多选 https github com angular ui ui select在我的页面中 首先 向获取数据的 url 发出 http get 请求 然后填充 ui sel
  • 我如何定义已检查整数的列表

    我有一个整数列表定义为List
  • 使用自适应窗口长度计算 data.table 中的滚动平均值

    我希望在具有自适应窗口的 data table 中按组计算移动平均值 以便在时间序列的开头没有 NA 我知道如何使用 frollmean 并设置adaptive TRUE 来做到这一点 例如参见 jangorecki 的响应this htt
  • 从相对路径获取图像

    在我的项目中我有 2 个包 images 包含图像和通知 包含java文件 在 notification main java 中 我使用此代码从图像中获取 Image 对象 Image image Toolkit getDefaultToo
  • WebLogic Server :: 服务器不支持 J2EE Web 模块规范 3.0 版

    当我尝试使用 WebLogic 11g 10 3 5 服务器运行应用程序时 它显示 服务器不支持 J2EE Web 模块规范 3 0 版 如何克服这个问题 Thanks 使用支持的规范版本 Servlet 2 5 开发您的应用程序 或者使用
  • 在 OSX“El Capitan”上安装 wxPython 2.8(用于骑行)

    我正在尝试安装 wxPython 2 8 unicode 版本 以便能够使用 robotsframework ride 到目前为止 从网站下载的安装程序失败 并显示错误 没有可安装的软件 并且使用Brew安装3 0版本 与ride不兼容 我
  • SagePay 表单 - 经典 ASP - 使用 rijndael.asp 时缺少货币字段

    我正在尝试在经典 ASP 中添加 Form Intergration SagePay 支付网关 我有一个来自 SO 的可用 PHP 版本 我已将其翻译成 VBSCRIPT 一切似乎都工作正常 但加密除外 我使用与 PHP 脚本相同的输入 以
  • 如何在 drupal 7 中的登录表单上设置占位符

    我需要在 Drupal 7 中为水平登录表单设置一个占位符 单击时该文本需要消失 他们只会说 用户名 和 密码 这是目前表单的代码 谢谢 function horizontal login block form form action ur
  • HTTP 状态 404 – 在 Spring boot 中未找到

    我是 Spring Boot 的初学者 我想在spring boot中编写HelloWorld编程 我在运行项目时做了一个 我得到的错误是 HTTP Status 404 Not Found 到目前为止我所尝试的内容附在下面 请帮助我写出一
  • Unix 时间戳到 FAT 时间戳

    我正在尝试将时间结构转换为 FAT 时间戳 我的代码如下所示 unsigned long Fat tm struct pTime unsigned long FatTime 0 FatTime pTime seconds 2 gt gt 1
  • Firebase/Google Cloud Function 中 HTTP 请求的多次返回

    我有一个云函数 可以对我的数据库进行一些搜索 这是一个相当昂贵的过程 涉及大量的计算 它的目标是找到最好的匹配 当找到好的匹配项时 我无法提前退出 因为可能会在迭代周期的后期找到更好的匹配项 因此 理想情况下 我想定期向客户更新迄今为止最好
  • 如何使用多个XMLHttpRequest?

    我需要从 8 个不同的 URL 获取 8 个 JSON 我将必须更改的查询字符串存储在数组中 并使用 for 循环遍历它 这是我的代码 var index ESL SC2 OgamingSC2 cretetion freecodecamp