呼啦一陣風(fēng)
2019-02-19 16:24:54
vue中,axios異步加載數(shù)據(jù),但是有的文件里面需要用到異步拿到的數(shù)據(jù),數(shù)據(jù)還沒拿到,文件已經(jīng)執(zhí)行了,這時(shí)候數(shù)據(jù)就是空,就會(huì)報(bào)錯(cuò),這個(gè)問題怎么解決?具體表現(xiàn):我這邊vue項(xiàng)目是進(jìn)入頁(yè)面的時(shí)候會(huì)調(diào)用一個(gè)login方法,然后設(shè)置localStorage,this.login().then(res => { if (res.code === 0) {
localStorage.setItem(res.data.access_token)
}
});然后有一個(gè)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'
})
}
}但是因?yàn)閘ogin方法還沒執(zhí)行完api.js文件就已經(jīng)執(zhí)行了,所以localStorage.getItem('Authorization')就是空導(dǎo)致報(bào)錯(cuò),請(qǐng)問這個(gè)問題怎么解決?
3 回答

慕村9548890
TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
我知道了,可以用函數(shù)來實(shí)現(xiàn),因?yàn)楹瘮?shù)執(zhí)行是實(shí)時(shí)的
就像使用
const SaleClockAuctionContract = window.web3.eth.contract(SaleClockAuction.abi).at(SaleClockAuction.address);const KittyCoreContract = window.web3.eth.contract(KittyCore.abi).at(KittyCore.address);
應(yīng)該使用函數(shù)包裝起來,實(shí)時(shí)調(diào)用,這樣才不會(huì)因?yàn)槲募虞d順序而出現(xiàn)window.web3未定義的錯(cuò)誤,
const SaleClockAuctionContract = () => { window.web3.eth.contract(SaleClockAuction.abi).at(SaleClockAuction.address); }const KittyCoreContract = () => { window.web3.eth.contract(KittyCore.abi).at(KittyCore.address); }

叮當(dāng)貓咪
TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
你可以利用axios和請(qǐng)求攔截器和響應(yīng)攔截器來做處理
請(qǐng)求攔截器:在每一次發(fā)送請(qǐng)求判斷l(xiāng)ocalStorage中有沒有toekn,如果有把token加入到header中,如果沒有路由跳轉(zhuǎn)到登錄界面
2.響應(yīng)攔截器:每一次收到響應(yīng)時(shí)重新賦值localStorage中的token
添加回答
舉報(bào)
0/150
提交
取消