有兩個(gè)頁面
content.vue:內(nèi)容頁
auth.vue:微信網(wǎng)頁授權(quán)頁
用戶首先訪問內(nèi)容頁,內(nèi)容頁先讓用戶授權(quán)并想要獲取用戶的openid。這時(shí)候發(fā)現(xiàn)沒有openid,直接跳轉(zhuǎn)到網(wǎng)頁網(wǎng)頁授權(quán)頁(auth.vue),使用靜默方式先向微信服務(wù)器請(qǐng)求code。然后發(fā)送code給我的服務(wù)器,然后我的服務(wù)器再把code等參數(shù)發(fā)送給微信服務(wù)器換回用戶的openid,帶著openid繼續(xù)返回到內(nèi)容頁。流程結(jié)束
就在我的服務(wù)器再把code等參數(shù)發(fā)送給微信服務(wù)器換回用戶的openid遇到一個(gè)問題
//向后端發(fā)送請(qǐng)求獲取openid等信息
axios.post("../api/weixin/getopenid?code="+code).then(res=>{
if (res.data.code == 1) {
localStorage.setItem('openid',res.data.data.openid);
}
})
setTimeout(function(){
this.$router.push({
path: '/content'
})
},1000);
因?yàn)閍xios.post是異步,如果下面沒有使用setTimeout推遲跳轉(zhuǎn)到內(nèi)容頁,結(jié)果內(nèi)容頁還是沒有在本地緩存中找到openid,又會(huì)繼續(xù)來請(qǐng)求,造成死循環(huán)。
有沒有什么其他辦法,把這個(gè)openid給及時(shí)的保存起來供其他頁面調(diào)用?
為啥不這樣呢?
或者這樣