28
2023
02

Promise解决小程序异步问题

 

用小程序做东西时遇到一个异步问题,比如上传图片需要读取返回的真实地址时,因为小程序异步的原因,程序会继续往下执行

往往是图片还没传完,下一步的函数都运行完了,这个时候根本取不到真实地址。

查看了很多文章,大部分都说用Promise来阻塞异步解决, 但是看了下Promise的用法文章,可能我才疏学浅,没太搞懂。

后来我参考了一个高手写的代码,终于知道如何用了,具体原理我就不想深究了,使用套路写在下面:

 

 我觉得不要做什么Promise API封装  不需要JS页面 import 这个封装函数,只会让人越搞越晕

 

 let  PromiseArr = []

 PromiseArr.push(new Promise((reslove,reject)=>{

 //这里写你想要阻塞的函数 ,比如wx.request 啊 wx.cloud.uploadfile啊 等等

 success:res=>{

  //这里写逻辑,比如获取图片云存储的真实地址  this.data.imagePath =  res.fileId 等等

  reslove();

  }

 }))

 //关键的执行步骤

Promise.all(PromiseArr).then(res=>{

//这里就可以开始写下一步执行的函数了 ,甚至也可以做Promise的嵌套,再写一个在里面

 this.setdata({

  //把上一步获得的结果进行加工, 这样的就不会异步了。

   images: this.data.imagePath

})

 })

 

只要按照以上套路出牌,基本上是没问题的。
————————————————
版权声明:本文为CSDN博主「粗鲁的青蛙」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jarro/article/details/106688488

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。