编程思路:应用周期获取唯一变量,页面周期使用唯一变量

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

//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:""
}
//pages.js
onload(){
	getApp().checkLoginSession({
		success:()=>{
			wx.showModel({
				title:"loginSession准备完毕啦,可以进行需要loginSession的请求啦"
			})
		}
	})
},

以上利用轮询检测机制,检查是否完成,完成后执行,以满足这种需要凭证的需求,(小程序/vue/app项目)中皆可使用

你可能感兴趣的:(vue,小程序,web,app,javascript)