如何保证app.js中的请求完成后page里的index.js才会请求
发布于 5 年前 作者 xuechao 11515 次浏览 最后一次编辑是 4 年前 来自 问答

在app.js的onLaunch中执行请求授权和获取服务端的token,然后首页的js拿着这个token去后台请求接口,但有时会出现token还没拿到就去后台请求API接口了,这个问题怎么解决啊?

3 回复

方法很多啊,有简单的和复杂的,复杂的更通用,大概是这种模式

app.js页

getToken(){

    wx.request({

    url:‘xxx’,

    success:(res)=>{

         this.globalData.token = res.data.token;

        this.globalData.tokenCallback && this.globalData.tokenCallback();//如果回调函数存在就执行

    }

    }

}

index.js

里判断一下

if(app.globalData.token){//如果已经赋值成功就直接用

    //获取到token后的执行逻辑

}else{//如果没有赋值成功就预先写好一个回调函数,然后获取到token后执行回调函数就行了

    app.globalData.tokenCallback = function(token){

            //获取到token后的执行逻辑

    }

}

可以考虑在首页的js去请求token,请求成功再去后台请求api接口,或者在首页弄个定时器,隔一段时间去查找token是否有值,有值就去调后台api,没值就继续轮询

getApp().login().then(function(){

//to do

})

回到顶部