收藏
回答

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

问题模块
API和组件

举个例子:

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


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

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


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

请问解决办法有哪些?


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




最后一次编辑于  2017-12-25
回答关注问题邀请回答
收藏

1 个回答

  • 漫无止境
    漫无止境
    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
    赞同
    回复