理想状态
在理想状态下我们将页面首次加载 onLoad 的数据存放到Storage,方便 onShow 用于判断接口的请求,但是在异步函数参与进来后一切都变得不一样了
在这里我是想在 onLoad 中获取到商户的bid,将获取到的bid存放在Storage,然后在 onShow 里面根据存放的bid获取不同商户的商品列表
实际情况
明明是按照正常流程来的为什么请求返回的数据为空呢?
检查!
检查一下后端
这里前端传到后端的bid为0,也就是说没有取到257
检查一下网络列表
问题出在这里,由于异步函数的原因,onLoad 执行完后不等bid返回就会去执行 onShow 里面的代码,此时Storage里面的bid并没有存进去,loadmemberdata 函数就已经开始执行了,所以传到后端的bid为0。
问题分析完了,那我们怎样来解决呢?
解决方案
有两种方案:一种是把他们封装成promise再同步执行,另一种是添加定时器让bid请求到了再去执行 loadmemberdata 。
小编挑第二种简单的解决方案来说一下:
首先我们在data里面定义一个空的定时器
再在onShow里面为定时器赋值操作函数
这里我做了一个判断,如果bid存在那就不需要定时器了。定时器的时间间隔可以自己视情况而定,别忘了在函数调用完了之后清除定时器哦,不然会一直网络请求浪费网络资源。文章来源:https://www.toymoban.com/news/detail-466601.html
这就是我的思路啦,欢迎大家指正!文章来源地址https://www.toymoban.com/news/detail-466601.html
到了这里,关于完美解决小程序onload异步函数导致onshow先执行的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!