如何做到循环异步操作,js

我在上传多张图片的需求中遇到了问题。
需求是这样的,我有一个image数组,保存本地图片地址,我向把图片全部上传到七牛云后,再把上传的结果提交到我的服务器。(但是,我只能得到第一张图片的上传结果,这次就提交到服务器了)

1.上传的函数

const upload = (url) => {
    return new Promise((resolve,reject) => {
        //单张上传成功后 得到 res
        resolve(res);
    })
}

2.需要上传的图片数组

let imageArr = ['uri1','uri2','uri3'];
这个时候就不知道怎么解决了。我需要得到 每张照片上传后的res

麻烦各位帮忙看看,谢谢,工作顺利!

阅读 3.4k
3 个回答
const upload = (url) => {
    return new Promise((resolve,reject) => {
        //单张上传成功后 得到 res
        resolve(res);
    })
}
const uploadAll = (urls) => {
    return Promise.all(urls.map(upload));
}

uploadAll(  ['uri1','uri2','uri3'] )
    .then( reses => {
        // 得到所有res啦
    } )

关于Promise.all http://es6.ruanyifeng.com/#do...

let promises = imageArr.map(function (_url) {
  return upload(_url)
});

Promise.all(promises).then(_e=>{/*success*/}).catch(_e=>{/*error*/})

个人觉得使用aysnc await比promise.all更好,保证顺序的同时不用等到全部结束才回调

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题