(小程序/vue/app项目)中皆可使用,很多时候,很后台服务进行交互的时候,需要使用一个唯一交互凭证(openId/session等),来标记是这个用户进行操作的,一般在打开小程序后,在app.onLaunch里获取用户的登录凭证,这一步与后台交互,是有请求时间的,如果在打开的页面中,操作的事情,需要用到这个唯一凭证,获取唯一凭证的请求还没有收到结果时,就会发生一个问题,我需要凭证,但是凭证还没有拿到,这种情况,我们可以使用检测方法来检查是否成功。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//app.js
onLaunch(){
this.getUserId();//启动时候,在全局获取userId(全局变量等任何用的东西)
},
getUserId(){
wx.request({//請求有時間
url:'获取唯一凭证的接口',
success:(res)=>{
this.globalData.loginSession=res.data.loginSession
}
})
},
checkLoginSession(options){//检测准备完成方法
options=options||{};
if(this.globalData.loginSession){//准备完成,则调用成功回调
options.success&&options.success(this.globalData.loginSession)
}else{
setTimeout(()=>{//还未准备完成,则200ms后调用自身,重新检查,此时将options继承给自己
this.checkLoginSession(options)
},200)
}
},
globalData:{
loginSession:""
}

1
2
3
4
5
6
7
8
9
10
//pages.js
onload(){
getApp().checkLoginSession({
success:()=>{
wx.showModel({
title:"loginSession准备完毕啦,可以进行需要loginSession的请求啦"
})
}
})
},

以上利用轮询检测机制,检查是否完成,完成后执行,以满足这种需要凭证的需求