onShow依赖于onLoad的异步请求的相关问题
发布于 5 年前 作者 yang56 12274 次浏览 来自 问答

举个例子:

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

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

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

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

请问解决办法有哪些?

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

1 回复

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() {},

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

回到顶部