Jac*_*cob 7 javascript ajax asynchronous vue.js
我有一个 JS 库,负责为客户端下载 JPEG 图像。所有这些都是异步完成的。在某些情况下,图像数量非常大......大约 5000 张图像。在这种情况下,Chrome 浏览器会针对 ajax 请求发出“ERR_INSUFFICIENT_RESOURCES”错误。
每个请求必须单独完成,没有选项可以在服务器端打包图像。
我在这里有什么选择?我怎样才能找到解决这个问题的方法?下载在 Firefox 中运行良好...
附上实际下载的代码:
function loadFileAndDecrypt(fileId, key, type, length, callback, obj) {
var step = 100 / length;
eventBus.$emit('updateProgressText', "downloadingFiles");
var req = new dh.crypto.HttpRequest();
req.setAesKey(key);
let dataUrl;
if (type == "study") {
dataUrl = "/v1/images/";
}else {
dataUrl = "/v1/dicoms/";
}
var url = axios.defaults.baseURL + dataUrl + fileId;
req.open("GET", url, true);
req.setRequestHeader("Authorization", authHeader().Authorization+"")
req.setRequestHeader("Accept", "application/octet-stream, application/json, text/plain, */*");
req.responseType = "arraybuffer";
req.onload = function() {
console.log(downloadStep);
downloadStep += step;
eventBus.$emit('updatePb', Math.ceil(downloadStep));
var data = req.response;
obj.push(data);
counter ++;
//last one
if (counter == length) {
callback(obj);
}
};
req.send();
}
Run Code Online (Sandbox Code Playgroud)
小智 6
该错误意味着您的代码正在超载内存(很可能是,或者待处理请求的配额已耗尽)。不要从后端发送所有数据,而是让前端请求 5000 张单独的图像并控制请求流。不管怎样,下载 5000 张图像是不好的。您应该将它们打包以供下载。如果您的意思是获取图像,那么通过静态或动态链接从前端加载图像更符合逻辑;)
| 归档时间: |
|
| 查看次数: |
19265 次 |
| 最近记录: |