promise了解过很多次了,但是都是单次调用,没遇到过并发异步的情况,这次刚好遇到了多重异步时间,正好用promise来处理一下,感受一下promise的魅力!
小程序上传图片到服务器之前只能用wx.upLoadFil方法进行上传,这个方法用的比较少所以一般不会去进行封装,就导致用起来会比较繁琐,而且在开发者工具上,这个方法请求时竟然看不到传输的参数!这个坑也是踩了好久!
好消息是微信小程序终于提供可以操作文件的api了,这样我们就获得了把用户上传的临时路径转化为base64格式的图片进而直接通过wx.request传输到服务器,就可以成功避开传输文件的坑了.
话不多说,上代码
let fileSystemManager = wx.getFileSystemManager();//使用微信提供的文件管理器.这里直接let一个保存起来,之后就不用多次调用了
// let一个存储多个promise对象的容器
let promiseArr = [];
//this.imgList是用户选择上传的图片的临时路径组成的数组
this.imgList.forEach(el => {
//将每一项添加至promiseArr
promiseArr.push(
new Promise(function(resolve, reject) {
fileSystemManager.readFile({
filePath: el, //选择图片返回的相对路径
encoding: "base64", //编码格式
success: res => {`
let src = "data:image/png;base64," + res.data;
resolve(src);