我的需求是 先下载完一数组的图片,然后再处理其它业务。
那么,小程序如何实现同步下载一个网络文件?
以下是我做的尝试:
我看了wx.downloadFile 的文档,我看文档说不支持promise调用。但是满足不了我的需求,它是异步下载的。
我用 async await 试了一下 。没有结果。
这是调用
that.getCacheOfOneImage(recordsObj[i].image_url).then(function(res){
console.log(res);
})
getCacheOfOneImage:async function(url){
return await new Promise(function(resolve,reject){
wx.downloadFile({
url: url, //仅为示例,并非真实的资源
success (res) {
// 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
if (res.statusCode === 200) {
console.log("cache file ",res.tempFilePath)
}
}
})
})
},
解决了嘛,我这开始无限套娃了。。。
async getCacheOfOneImage(){ return await new Promise(function(resolve,reject){ wx.downloadFile({ url: url, //仅为示例,并非真实的资源 success (res) { // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容 if (res.statusCode === 200) { resolve(res.tempFilePath) console.log("cache file ",res.tempFilePath) return } reject() //失败 }, fail:reject }) }) }, await getCacheOfOneImage()
监听,完成后执行下一步
https://developers.weixin.qq.com/miniprogram/dev/api/network/download/DownloadTask.onProgressUpdate.html