javascript - 等到 for 循环中的所有 XHR 请求都完成后再进行下一步操作
问题描述
作为一个 JS 菜鸟,我这几天一直在失败。我需要等到 for 循环中的所有 XHR 请求都完成,然后继续下一个操作。我该怎么做呢?
这是其中的一个片段:
window.onload = function () {
(function () {
var xhr = []
for (let i = 0; i < 1000; i ++) {
(function () {
xhr[i] = new XMLHttpRequest()
xhr[i].open('GET', 'http://www.example.com')
xhr[i].send()
console.log('done')
})()
}
console.log('Done')
})()
}
解决方案
函数内部的调用是同步调用。即使您的函数调用是异步的,for 循环也是同步的。您必须将 for 循环包装在同步函数中以获得所需的输出。
window.onload = function () {
setTimeout(()=>{
for (let i = 0; i < 1000; i ++) {
xhr[i] = new XMLHttpRequest()
xhr[i].open('GET', 'http://www.example.com')
xhr[i].send()
console.log('done')
}
}, 1000);
console.log("Done");
}
window.onload = function () {
(async function () {
var xhr = []
for (let i = 0; i < 1000; i ++) {
xhr[i] = new XMLHttpRequest()
xhr[i].open('GET', 'keshavbist.com.np')
await xhr[i].send()
console.log('done')
}
console.log('Done')
})()
}
推荐阅读
- python - wkhtmltopdf 配置路径
- actions-on-google - 发送媒体响应时,有没有办法使用 Google Actions 和 Actions SDK 作为履行工具来捕获和处理“下一个”和“上一个”?
- react-native - 密钥哈希与 facebook react-native 应用程序中存储的任何密钥哈希不匹配
- android - 两个模拟器之间的套接字连接
- java - AppenderSkeleton (Log4j2)
- java - API 29 (Android Q) 中未创建目录
- google-cloud-platform - 如何禁用 GCP 服务帐号来创建 VM 实例?
- android - 在回收站视图中从 firebase 数据库中检索图像和名称
- javascript - 我想在打字稿的导航选项卡之间切换
- javascript - 在过滤器中选择性地返回部分匹配对象