在 onprogress 中取 xhr.response ,结果值为 null 。 如题,谢谢。
1
wunonglin 2021-11-26 16:02:23 +08:00
|
3
wunonglin 2021-11-26 16:13:22 +08:00
请求成功后可以获取 body 的数据,在获取 body 的过程中(也就是下载),是可以得到以获取的二进制呀。
大白话将你是想获取啥?按我理解,你是不是想下载了一半断网或者出错了,提取已经下载到的数据是不? |
7
waiaan OP @wunonglin
文档里说 response 属性的值会根据 responseType 属性包含实体主体( entity body ), 它可能会是一个 ArrayBuffer, Blob, Document,JSON, string,或者为 NULL(如果请求未完成或失败) 我这个算请求未完成吗? |
8
wunonglin 2021-11-26 16:39:27 +08:00
@waiaan #6
其实你可以分片下载就好了,比如 100m 文件分 10m 一个请求,当你下载到了 60m (也就是执行成功了 6/10 请求)到了第 7 个失败了,依然可以重试第 7 个。 一般情况下没人会在不稳定场景下下载大文件的(这里是我不知道你需求下的建议) |
9
wunonglin 2021-11-26 16:42:15 +08:00
@waiaan #6 你可以看看视频网站的请求,比如 A 站、B 站、P 站,都是分片请求的,对于他们来说可以实现拖拽播放,动态清晰度切换,音视频轨道分离等操作
|
10
waiaan OP |
11
wunonglin 2021-11-26 17:08:00 +08:00
@waiaan #10
文件小的话重试就可以了。大文件就要分片下载了。 10m 都不确定能不能下的话要么就分小片(比如 1m 一片? 512k 一片?这都不行你就要解决一下网络的问题了),要么就整个重试咯。毕竟文档也说请求没完成他会返回 null ,这个在浏览器内是没办法了 |
12
wunonglin 2021-11-26 17:10:48 +08:00
|