收藏
回答

onShow依赖于onLoad的异步请求的相关问题

举个例子:

比如onLoad里面的操作是发送用户登录信息,然后onShow是获取用户的一些数值,页面每次切换,不管是navigatorTo还是back都要读取一次用户数值,那么这个读取函数是放在onShow里面的,但是并不需要页面每次切换都需要发送用户登录信息。所以登录函数和获取函数是分别放在onLoad和onShow里面的。


1、即onLoad函数里面有个获取openid的异步函数

2、onShow函数里面有个依赖于onLoad获取到的openid发起另一个请求


但是onLoad往往还没执行完,就开始了onShow的操作,但这个时候openid是空的。

请问解决办法有哪些?


如果用Promise来解决的话,如何实现跨onLoad和onShow函数?




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

2 个回答

  • Api调用师
    Api调用师
    2022-01-10
    这个库可以解决类似问题,你在app.onLaunch里去获取openid存在globalData里,然后在页面里这么用onShowlogin:
    https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013
    
    2022-01-10
    有用
    回复
  • 漫无止境
    漫无止境
    2017-12-25

    onLoad: function() {

        this.getOpenId((openid) => {
            this.load()
            this.show()
        })
    },
    onShow: function() {
        this.getOpenId(()=> {
            this.show()
        })
    },
    getOpenId: function(callback) {

        if (app.globalData.openid) {

           callback && callback(openid)

       } else {

           fetch().then((openid) => {

               app.globalData.openid = openid

               callback && callback(openid)

           })

       }

    },
    load: function() {},
    show: function() {},

    再加上阻止同时运行的判断就差不多可以了

    2017-12-25
    有用
    回复
登录 后发表内容