收藏
回答

关于onload与onshow一些逻辑疑问

小程序onload 和 onshow是异步,但我每个页面都有获取用户的登录信息而调用接口进行操作,获取用户登录信息这步可能涉及到调用接口,如果我写在onload上,可能会导致onshow调用接口的方法还没来得及获取到用户信息就执行了,如果我把逻辑都写在onload上,后退到页面还要有部分数据要刷新状态,我又不想把逻辑全部写在onshow,这样每次后退都重新调取了数据,请问大家有什么好的见解呢

onLoad: function(options) {

    

    authorize.checkAuth(function() {

        //业务逻辑

        //请求一些一次性加载的接口        

    })

},

onShow:function(){

    //每次进来或者后退都要在确保有用户登录状态情况下请求状态数据

    this.getStatus()

}


回答关注问题邀请回答
收藏

7 个回答

  • Element
    Element
    2020-04-02

    在data中设置一个flag变量为false, onShow 请求数据的判断条件为true;onLoad中获取完信息后改变flag状态。这样的话,onShow方法就不会早早的跑在onLoad前面啦~

    2020-04-02
    有用 1
    回复 2
    • 努力的NG
      努力的NG
      2021-01-16
      请问这样的话是否需要在onShow中写一个while(1) loop然后在里面再break呢?我的意思是比如我们有如下code, hello不会被打印出来因为一开始flag是false,直到后边才变为true
      2021-01-16
      回复
    • side alley - C 0 0
      side alley - C 0 0
      2022-02-18
      正解。
      2022-02-18
      回复
  • 秦爷
    秦爷
    2022-03-16

    设置变量,初始值为false,onload中调用登录,回调中调后续方法。onhide中变量值改true,onshow中判断状态为true调用后续方法,这样避免登录,还能保证数据刷新

    2022-03-16
    有用
    回复
  • 波吉
    波吉
    2021-06-24

    我也遇到了这个问题

    2021-06-24
    有用
    回复
  • 🐬慧
    🐬慧
    2020-06-18

    设置一个全局变量,在返回到此页面时给全局变量设置个状态,离开页面时清除状态。这样在onshow中判断全局变量存在状态值时执行。

    2020-06-18
    有用
    回复
  • \
    \
    2019-07-22

    该首次加载的写onLoad,需要即时刷新的在onShow里面加this.onLoad()

    2019-07-22
    有用
    回复
  • I will be the one (饶艺伟)
    I will be the one (饶艺伟)
    2019-07-22

    登陆后把登陆状态放全局变量里,调用接口时候先判断全局有没有,有就可以直接获取状态了,没有再给提示让他登录。如果不想后退都再调所有接口,那就放onLoad里,再onshow时候再单独把做更改的那个属性做更改。

    2019-07-22
    有用
    回复 2
    • 小鹏君
      小鹏君
      2019-07-22
      我现在是把登录状态放缓存里的,一个页面有只加载一次的接口,有每次显示都要加载的接口,所有接口都是要基于登录状态下的,但又不可能同时都放在登录回调里
      2019-07-22
      回复
    • I will be the one (饶艺伟)
      I will be the one (饶艺伟)
      2019-07-22回复小鹏君
      那登陆页面接口很多也没办法,只有放回调里了。
      2019-07-22
      回复
  • 痛快科技
    痛快科技
    2019-07-22

    写在onShow中,登陆后缓存登陆状态,下次执行onShow时,判断一下登陆状态

    2019-07-22
    有用
    回复 2
    • 小鹏君
      小鹏君
      2019-07-22
      一些逻辑不想后退动作的时候重复执行多一次,这个要怎么避免
      2019-07-22
      回复
    • lee
      lee
      2019-07-22
      在缓存里面增加一个状态判断,如果之前执行过就不再重复执行,没执行再进行执行
      2019-07-22
      回复
登录 后发表内容