最近在写小程序海报图时,遇到下载多张图片的问题,由于异步会导致每次返回结果顺序会不同,
无法对应图片,最终使用promise.all来解决问题。话不多说,直接上代码
// 下载图片
downloadFile(res) {//res传来的是需要下载的链接数组
var promiseArray = [];
function download(res) {
return new Promise((resolve, reject) => {
uni.downloadFile({
url: res,
success: (e) => {
if (e.statusCode == 200) {
console.log(e.tempFilePath);
resolve(e.tempFilePath)
}
},
})
})
}
//download(item) 会返回一个promise对象 最终通过promise.all来按照顺序执行各个promise来达到返回数组可以对应
res.map((item) => {
promiseArray.push(download(item));
})
return Promise.all(promiseArray)
}