亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

新手上路,vue.js混入mixins求老司機指點!

新手上路,vue.js混入mixins求老司機指點!

呼如林 2019-08-17 20:53:58
//init.jsconsthi={asynccreated(){awaitthis.getToken()}}//業務組件mixins:['init']asyncmounted(){awaitthis.getUserInfo()}上述代碼為我開發了一個vue全局混入js,每個頁面進入都會調用this.getToken(),然后這個方法返回一個token,而業務組件中this.getUserInfo()這個方法調用接口依賴于this.getToken()接口的返回值。目前的問題時,按照上述代碼先執行的this.getToken(),后執行的this.getUserInfo(),但是我需要拿到第一個方法的返回值后再去調用this.getUserInfo()方法,但是現在第一個接口調用后,立馬去調第二個接口,此時我還沒有拿到第一個接口返回來的token。init.js為公共js這個問題應該怎么解決
查看完整描述

2 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

解決方式很多種,在我看來最簡單的方案就是在init.js后面觸發個自定義鉤子
consthi={
asynccreated(){
awaitthis.getToken()
this.getTokenAfter&&this.getTokenAfter()
}
}
然后把你寫在mounted里面的方法放在methods下面這個自定義鉤子里
methods:{
getTokenAfter:asyncfunction(){
awaitthis.getUserInfo()
},
                            
查看完整回答
反對 回復 2019-08-17
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

首先你的這種方式使用并不能保證生命周期函數之間是同步執行的,只能保證生命周期函數內部是同步執行的,你可以這樣
//init.js
consthi={
asynccreated(){
awaitthis.getToken()
this.getUserInfo()
},
methods:{
getUserInfo(){}//啥都不寫,具體在相關業務組件中重寫即可
}
}
//業務組件
mixins:['init']
methods:{
getUserInfo(){
//你的具體業務代碼
...
}
}
                            
查看完整回答
反對 回復 2019-08-17
  • 2 回答
  • 0 關注
  • 344 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號