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

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

vue中異步請求數據,異步請求還沒完成,文件就執行了就會報錯,怎么解決?

vue中異步請求數據,異步請求還沒完成,文件就執行了就會報錯,怎么解決?

呼啦一陣風 2019-02-19 16:24:54
vue中,axios異步加載數據,但是有的文件里面需要用到異步拿到的數據,數據還沒拿到,文件已經執行了,這時候數據就是空,就會報錯,這個問題怎么解決?具體表現:我這邊vue項目是進入頁面的時候會調用一個login方法,然后設置localStorage,this.login().then(res => {    if (res.code === 0) {         localStorage.setItem(res.data.access_token)     } });然后有一個api.js文件,使用的是axios方法const instance = axios.create({    baseURL: config.BASE_URL,    headers: {        Authorization: localStorage.getItem('Authorization') || ''     } });export default {     getList() {        return instance.request({            url: '123',            method: 'get'         })     } }但是因為login方法還沒執行完api.js文件就已經執行了,所以localStorage.getItem('Authorization')就是空導致報錯,請問這個問題怎么解決?
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

我知道了,可以用函數來實現,因為函數執行是實時的
就像使用

const SaleClockAuctionContract = window.web3.eth.contract(SaleClockAuction.abi).at(SaleClockAuction.address);const KittyCoreContract = window.web3.eth.contract(KittyCore.abi).at(KittyCore.address);

應該使用函數包裝起來,實時調用,這樣才不會因為文件加載順序而出現window.web3未定義的錯誤,

const SaleClockAuctionContract = () => {    window.web3.eth.contract(SaleClockAuction.abi).at(SaleClockAuction.address);
}const KittyCoreContract = () => {    window.web3.eth.contract(KittyCore.abi).at(KittyCore.address);
}


查看完整回答
反對 回復 2019-02-19
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

你可以利用axios和請求攔截器和響應攔截器來做處理

  1. 請求攔截器:在每一次發送請求判斷localStorage中有沒有toekn,如果有把token加入到header中,如果沒有路由跳轉到登錄界面

2.響應攔截器:每一次收到響應時重新賦值localStorage中的token


查看完整回答
反對 回復 2019-02-19
  • 3 回答
  • 0 關注
  • 2761 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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