Promise.all 轮询批量上传文件封装

使用Promise.all全部任务执行完毕再进入回调函数的特性 封装批量上传函数

// 上传文件
export const uploadFiles = (data) => {
    // data这里是指二进制文件
    let formData = new FormData()
    formData.append('file', data.file)
    return request({
        url: '上传路径',
        method: 'post',
        data: formData
    })
}

// 批量上传
export const uploadFilesList = (fileLsit) => {
    let arr = []
    const upFun = (file) => {
        arr.push(
            new Promise((resolve) => {
                uploadFiles(file).then((res) => {
                    // 这里可以对返回的参数格式化处理
                    resolve(res)
                })
            })
        )
    }
    fileLsit.map((item) => {
        // item.raw是element上传组件拿到的文件流
        let data = {
            file: item.raw,
        }
        upFun(data)
    })
    return Promise.all(arr)
}
uploadFilesList(fileList).then(res=>{
    // fileList内的文件全部上传完毕后触发
})

你可能感兴趣的:(Promise.all 轮询批量上传文件封装)