javascript - 使用 XmlHttpRequests 下载多个文件
问题描述
我正在尝试使用 XmlHttpRequest 下载多个文件,但无法处理异步方法。如何以与 urls 数组相同的顺序获得结果。
网址 = ['url1', 'url2', 'url3']
得到结果:['url2', 'url1', 'url3']
function downloadFiles(urls, callback) {
var buffer = []
var ind = 0
for (var u in urls) {
var xhr = new XMLHttpRequest()
xhr.open('GET', urls[u], true)
xhr.responseType = 'arraybuffer'
xhr.onload = function (e) {
if (this.status == 200 || this.status == 304) {
var uInt8Array = new Uint8Array(this.response)
var i = uInt8Array.length
var binaryString = new Array(i)
while (i--)
binaryString[i] = String.fromCharCode(uInt8Array[i])
var data = binaryString.join('')
var base64 = window.btoa(data)
var fileName = urls[ind].substr(urls[ind].indexOf('.jpg')-20, 24)
//var downloadedFile = createTempFolder() + fileName;
//writeFile(downloadedFile, base64)
buffer[ind] = downloadedFile
if (ind === urls.length - 1) {
return callback(buffer)
}
ind++
}
};
xhr.send()
}
}
解决方案
推荐阅读
- javascript - 无法在 useEffect 挂钩处停止嵌套组件的无限循环
- c++ - 将 boost ASIO 缓冲区数据转换为 JPEG 格式的 opencv 矩阵
- python - 我的图像数组的第三维是什么,如何正确删除它?
- python - 使用 Google Cloud AppEngine 管理 API 通过 Python 创建请求?
- sql-server - “在 ODBC = ServiceNow 连接上不支持请求的转换错误
- python - 出于某种原因 csv_f.line_num 为所有条目返回 0 而不是索引
- angular - Angular 12 Quill富文本编辑器在组件中初始化后设置内容?
- reactjs - react-native start 崩溃并出现错误 npm[11708]: c:\ws\src\util-inl.h:369: Assertion `!(n > 0) || (ret != nullptr)' 失败
- plot - 如何绘制评分变量的频率分布,如下例中的 R 所示?
- python - 如何从 Python 中启动 Tensorboard dev 作为与 Python 会话并行的子进程?