完美解决小程序onload异步函数导致onshow先执行的问题

这篇具有很好参考价值的文章主要介绍了完美解决小程序onload异步函数导致onshow先执行的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

理想状态

在理想状态下我们将页面首次加载 onLoad 的数据存放到Storage,方便 onShow 用于判断接口的请求,但是在异步函数参与进来后一切都变得不一样了

完美解决小程序onload异步函数导致onshow先执行的问题完美解决小程序onload异步函数导致onshow先执行的问题

在这里我是想在 onLoad 中获取到商户的bid,将获取到的bid存放在Storage,然后在 onShow 里面根据存放的bid获取不同商户的商品列表

实际情况

完美解决小程序onload异步函数导致onshow先执行的问题

 完美解决小程序onload异步函数导致onshow先执行的问题

明明是按照正常流程来的为什么请求返回的数据为空呢?

检查!

检查一下后端

完美解决小程序onload异步函数导致onshow先执行的问题

这里前端传到后端的bid为0,也就是说没有取到257 

检查一下网络列表完美解决小程序onload异步函数导致onshow先执行的问题

 问题出在这里,由于异步函数的原因,onLoad 执行完后不等bid返回就会去执行 onShow 里面的代码,此时Storage里面的bid并没有存进去,loadmemberdata 函数就已经开始执行了,所以传到后端的bid为0。

问题分析完了,那我们怎样来解决呢?

解决方案

有两种方案:一种是把他们封装成promise再同步执行,另一种是添加定时器让bid请求到了再去执行 loadmemberdata 

小编挑第二种简单的解决方案来说一下:

首先我们在data里面定义一个空的定时器完美解决小程序onload异步函数导致onshow先执行的问题

再在onShow里面为定时器赋值操作函数

完美解决小程序onload异步函数导致onshow先执行的问题

这里我做了一个判断,如果bid存在那就不需要定时器了。定时器的时间间隔可以自己视情况而定,别忘了在函数调用完了之后清除定时器哦,不然会一直网络请求浪费网络资源。

这就是我的思路啦,欢迎大家指正!文章来源地址https://www.toymoban.com/news/detail-466601.html

到了这里,关于完美解决小程序onload异步函数导致onshow先执行的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • onLoad与onShow的区别

    onLoad 页面加载时调用,可以获取参数,通过 options 。 onShow 页面显示时调用。 主要区别: 从二级页面返回该页面时, onLoad 不会再次加载,而 onshow 会重新加载。 还有从后台切换回来也会触发onshow,而不会触发onload 这点很重要: 1、如果加载列表页,二级页面对一级的列表页

    2024年02月11日
    浏览(35)
  • 微信小程序开发中,onLoad() 和onShow()的区别

    在微信小程序的开发过程中,经常用到很多生命周期函数,在这里介绍一下 , onLoad() 和 onShow() 的区别: onLoad() : 在页面加载的时候触发,只会 调用一次 ,在 onLoad() 函数中,可以通过 option 获取当前页面路径中的 参数 onShow() : 在页面显示时调用,也就是切换页面的时候,

    2024年02月16日
    浏览(30)
  • 微信小程序:微信小程序中首页onLoad()函数加载两次问题(已解决)

    我在学习微信小程序的开发的过程中,在学到云开发时,首页要加载服务器数据,发现onLoad函数被加载了两次,如图 然后来搜,发现问题出在了onShow函数这,这个函数只有在此页面第一次加载时才会被调用,而这个函数里不知道什么时候加上了这行代码 this.onLoad() (可能是开

    2024年02月16日
    浏览(37)
  • 1、其他页面返回tabBar页面不刷新(onLoad,onShow,onTabItemTap)

    原因:在onLoad里修改数据,但是onLoad 首次进入页面触发,只触发一次 解决方法:在onShow里修改数据,onShow每次打开页面都会调用一次 拓展:onTabItemTap()在 tabbar 切换时触发。

    2024年02月04日
    浏览(39)
  • vue/uniapp - 返回上一页并onLoad/onShow刷新数据列表接口

    在uni中,返回页面是不会触发 onLoad 方法的; 如果我们只想在特定情况下返回上一页才需要刷新数据,那么用 onShow 的话,那刷新就太频繁了; 这时候,可以用 $emit 和 $on 去解决。 比如说,从详情页(detail.vue) 回到 列表页(list.vue): 进入的页面 给大佬暴赞👍👍👍👍👍👍

    2024年02月04日
    浏览(49)
  • uni-app的页面的生命周期:onLoad、onShow、onReady

      onLoad:页面加载了,在onLoad中发送请求是比较合适的,即页面一加载就发送请求获取数据。 onShow:页面显示了,会触发多次,只要页面隐藏,然后再显示出来都会触发。这里会重复触发,如果你重复发送请求不合适。 onReady:页面初次渲染完成了,但是渲染完成了,你才发送请

    2024年02月11日
    浏览(49)
  • 在uniapp vue3 setup语法糖中调用onLoad、onShow等生命周期

    从 @dcloudio/uni-app 导出 可导出项:

    2024年02月16日
    浏览(46)
  • 【面试问题】事务中执行了异步任务分发数据,由于事务未提交,导致异步任务无法执行

    客户数据分发CRMS系统的时候异常,分发任务强依赖于事务内有没有提交,异常由事务未及时提交导致异步任务无法及时查到数据,现将异步任务调整为事务提交后处理 添加事务同步管理器,声明异步是在事务提交后执行

    2024年02月13日
    浏览(37)
  • Vue - 实现类似小程序 onShow() 一样的生命周期钩子方法(监听页面的显示,只要页面显示就执行代码)

    我们都知道,在微信小程序和 uni-app 项目中,页面有一个 onShow() 生命周期,当页面显示时就会触发。 但在 Vue.js / Nuxt.js 项目中是没有这个钩子函数的, 本文将提供 最简单、高效 的解决方案, 另外兼容性亲测完美。 如下效果图所示,首页每次显示的时候都会触发(您看控制

    2024年02月11日
    浏览(47)
  • 微信小程序onLoad加载定义好的函数

    运行时老报错 后来修改为正确的代码 再尝试运行,一切OK!

    2024年04月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包