1. 问题描述
今天修改一个10年前的代码,只能用ajax通信,然后下载使用get请求转换数据格式交给a标签,但是下载循环中遇到了请求合并的问题。(从Network来看就是前面的请求发都发出去,就变红了)
2. 解决方案
- 常规解决方法就是自己去维护一个请求队列了,一个请求完成以后调用回调函数,执行下一个请求
- 或者多开几个界面每个界面维护一个请求了
这里贴出多个界面a标签的下载代码:
let url1 = url + '&infer_type=nii.gz&convert_to_3=True'
let link1 = document.createElement('a')
link1.style.display = 'none'
link1.href = url1
link1.target = "_blank"
document.body.appendChild(link1)
link1.click()
window.URL.revokeObjectURL(url1)
document.body.removeChild(link1)
- 最主要的就是
target="_blank"
跳出一个空白界面,维护对同一个请求的链接从而让浏览器放弃合并
3. 结果展示
- 吐槽一下,下载感觉都有各种通信框架维护请求了,遇到这些旧需求还真是脑子转不过来