最近,遇到一个问题,onLoad里面的异步函数没有调用完,也就是数据还没有返回来,onShow里面的异步函数就已经返回数据,并且渲染出来了,如果onLoad和onShow是同样的异步函数,那么就会导致数据无法及时的更新。

开发中的场景 开发中支付成功跳转到支付完成界面,点击支付完成界面的返回订单,跳转到全部订单界面。 此过程中支付成功状态界面非我们制作,是别的项目组的,所以无法在此界面调用获取支付状态接口,只能在全部订单界面调用。

        假设:A页面是订单页面,B页面是别人的支付完成界面,A页面中的

        onLoad函数调用getPayState()支付状态函数和getData()获取订单列表数据函数

        onShow中都有getData()获取订单列表数据函数

        操作:点击B支付完成界面的返回订单按钮--》跳转到A全部订单界面

预想结果:执行onLoad中的两个函数,渲染数据,完成支付订单的渲染以及状态的变更。

        出现的问题onLoad开始执行getPayState()函数,此时没等到这个函数执行完毕,onShow里面的getData()函数开始执行,执行完毕渲染数据,此时页面显示所有的订单数据,但是!但是!因为getPayState()函数没有执行完毕,所以返回的支付订单数据中,新支付的那个订单支付状态是错误的!!!

解决措施1:因为onShow执行了getData()函数导致渲染的数据错误,所以直接注释掉这里面的函数,也就是onShow不用了。

再次出现的问题:因为onShow函数不用了,那么进行其他操作再次返回此页面不会再重新渲染数据。比如点击订单的申请退款按钮,提交完成之后,返回全部订单,应该再次调用getData()函数,但是onShow不用了,所以无法请求数据。onLoad不会调用。

         解决措施2针对onShow函数不用了,那么需要在退款的界面返回的时候,调用A页面订单界面的getData()函数,这个我尝试了很多,都不成,以失败告终。

    解决措施3:设置变量show,在onLoad函数中,设置show为false,用于阻止onShow里面函数的调用。例如下面这样:

 onLoad(options) {this.onshow=falsethis.getPayStatus(options.RdSeq)this.getData();
},onShow() {        console.log("onShow")if(this.onshow){console.log("onShow请求订单数据")this.getData();}
},

此时就可以了,保证onLoad调用的时候,onShow不调用。

uniapp中onShow比onLoad先渲染数据相关推荐

  1. uniapp中vue强制刷新部分视图数据

    uniapp开发的时候经常会遇到想要修改当前数据中的部分数据,控制台输出发现是正确,但是界面显示还是旧数据. 试试 this.$set(obj, key, value):---this.$set(原对 ...

  2. Uniapp中onShow()的应用

    遇到问题: 在使用一些变量进行判断时,用完一次开始下一次判断时,结果会跟前一次一样,比如门禁中第一个房子打开后,切换到另外的房子,结果返回结果跟第一个房子一样. 原因分析: 用于使用了相同的变量进行判 ...

  3. uniapp中checkbox复选框动态绑定数据

    checkbox复选框动态绑定数据: <template><view class="box"><checkbox-group @change=&quo ...

  4. uni-app的渲染数据和三种调接口的方法

    渲染数据代码示例: <template><view class="content"><view class="page-section in ...

  5. vue从后台获取新数据后刷新_vue项目中实现定时刷新页面(重新渲染数据实时更新)...

    需求: 每隔一分钟自动刷新一下当前页面,同时发送请求,重新渲染数据,以到达实时更新. 开始: js有两种定时器 setInterval(function(){}, milliseconds)--会不停 ...

  6. uniapp写小程序组件封装修改数据不渲染

    uniapp写小程序组件封装修改数据不渲染 数据通过props传进来的,对数据进行修改,js打印是有修改的,但是页面无变化,最好找的原因,props传入的数据是不能去直接操作的,可以使用其他方法,比如 ...

  7. uni-app中使用腾讯位置服务实现小程序地图选点功能

    文章目录 1. 官方文档 2. 小程序添加插件 3. HBuilder配置 4. 配置代码 5. 页面代码 1. 官方文档 技术选定(地图选点插件) (对应官网:https://lbs.qq.com/ ...

  8. Uniapp中使用高德地图,并在android studio中离线打包

    Uniapp中使用高德地图,并在android studio中离线打包 带高德地图功能的Uniapp的android离线打包 1. Uniapp中使用高德地图的方式 2. 高德地图中申请key 3. ...

  9. uni-app中的数据绑定

    uni-app中的数据绑定 在页面中需要定义数据,和我们之前的vue一模一样,直接在data中定义数据即可 export default {data () {return {msg: 'hello-u ...

最新文章

  1. SpringBoot-JPA入门
  2. SUN Zone Cluster安装及配置说明之三
  3. Windows 下使用Git管理Github项目
  4. 用ASP.NET AJAX 开发Web程序 — UpdatePanel篇
  5. spring框架中JDK和CGLIB动态代理区别
  6. SharePoint学习札记[4] — 创建SharePoint站点
  7. Lotus中关于字符串处理的函数汇总
  8. Kali Linux Web 渗透测试秘籍 第九章 客户端攻击和社会工程
  9. 基于树莓派2代的DIY无线路由器
  10. Android应用及应用管理
  11. Linus 谈软件开发管理经验
  12. 2021 年最受欢迎的深度学习软件
  13. 学习python基础(六)
  14. 海豚湾--纪录日本人如何杀戮海豚的
  15. Tensorboard可视化
  16. 返程高峰正在来临,百度上线新型肺炎患者同行者查询服务
  17. 普中科技51单片机的ADC采样电位器功能实现以及特点
  18. UniAPP 安卓应用版本自动更新及下载安装
  19. 抱薪者说 | 咖啡:斜杠青年操作指南
  20. 苹果cms8.x 命令执行漏洞本地攻击演示

热门文章

  1. Windows 使用键盘移动窗口
  2. 什么是Gamma 曲线
  3. python模拟用户登录注册定义函数user_python模拟登录通达信
  4. python爬虫40个项目_python三个爬虫项目代码实例
  5. 从事c++一年的感悟
  6. 数据传输POST心法分享,做前端的你还解决不了这个bug?
  7. 查看 CPU架构类型
  8. 博弈论Nim取子问题,困扰千年的问题一行代码解决
  9. matlab关闭文本,matlab parpool 关闭
  10. ANASYS Fluent保存的文件打不开或打开出现错误,解决方法