axios 并发上传,使用onUploadProgress获取实时进度?

新手上路,请多包涵

问题描述

在axios中,onUploadProgress可以实时获取上传进度,可以用来展示进度条,但它返回的数据对象与业务不相关,所以在多任务并发时无法区分具体是哪个任务,也就无法给这些任务展示实时进度条,是否可以往里传一个标识量用以区分业务数据?或有其他的办法,包括但不限于换其他任何js库。

阅读 6.9k
1 个回答
✓ 已被采纳新手上路,请多包涵

把发起请求的代码放入一个function中,function中的传入参数决定当前请求在业务中的标识:

uploadImage (i) {
    let obj = this.images[i]
    axios.post('http://localhost/...', obj.formData, {
        headers: { 'Content-Type': 'multipart/form-data' },
        onUploadProgress: (evt) => {
            // 重点在这里,对于方法内的异步调用,使用let声明的变量obj不会发生越界
            obj.upload = evt.loaded / evt.total * 100 | 0
        }
    }).then((resp) => {
        // 完成
    }).catch((error) => {
        // 出错
    })
    let j = i - 1 // 指针前移或后移(注意不能自减),这里是从后往前
    if (j >= 0) this.uploadImage(j) // 异步请求不需要回来,可以再次调用,直至指针为-1
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题