nvidia验证程序加载失败_小程序回调让你更流畅

小程序加加载数据时,个别数据需要用户授权登录才能获得,比如,会员中心,用户订单等,但有些特殊情况下,打开小程序登录一次后,小程序缓存的登录数据sessiontoken已要失效,重新请求数据为空,因此这里需要写一个回调函数验证是否有效登录,验证通过回调加载数据,验证不通过从新登录理回调加载数据。

以下是微信小程序得到code,发送给后台服务器,后台服务器用code来得到openid及相关信息

fc9adad0a317d915510723646ad89b72.png
userlogin:function(e,cb){    wx.login({      success: function (res) {        var code = res.code;//发送给服务器的code        var nick='';        var avatarUrl='';        if (code) {          wx.request({            url: common.httpsurl +'/cus/appxq',            data: {              code: code,              nick: nick,              avatarUrl: avatarUrl,              tjopenid:common.wuser.tjopenid            },            header: {              'content-type': 'application/json'            },            method: 'GET',            success: function (res) {              console.log(res.data);              common.wuser.openid = res.data.openid;              common.wuser.sessionkey = res.data.session;              common.wuser.lg = res.data.lg;                typeof cb == "function" && cb();            },            fail: function (res) {              wx.navigateTo({                url: '/pages/index/index'              });            }          })        }        else {          console.log("获取用户登录态失败!");          wx.navigateTo({            url: '/pages/index/index'          });        }      },      fail: function (error) {        console.log("login:error");      }    });}

第二个回调检查登录sessiontoken是否有效,无效时重新login

  checklogin:function(e,cb)  {    var that = this;    request.req('app/userinfo', {      sessionKey: common.wuser.sessionkey    }, (err, res) => {       if (res.data.login)      {        that.userlogin(e,function(){        typeof cb == "function" && cb()       })      }      else      {         common.wuser.phone=res.data.phone;          common.wuser.realname=res.data.realname;        typeof cb == "function" && cb()      }    })  }

回调函数中的cb为回调部分,等扩行完毕后会回调cb所对应的操作代码。回网络请求并非同步执行,所以部分请求要定会回调才行。