鍍金池/ 問答/HTML/ vue中網(wǎng)絡(luò)請(qǐng)求失敗的處置問題?

vue中網(wǎng)絡(luò)請(qǐng)求失敗的處置問題?

場(chǎng)景需求:

前端向后臺(tái)首次請(qǐng)求數(shù)據(jù)失敗后再次請(qǐng)求數(shù)據(jù)4次,過程中前臺(tái)顯示轉(zhuǎn)圈(等待),第四次依然失敗,轉(zhuǎn)圈消失,直接顯示:“請(qǐng)求失敗,請(qǐng)檢查網(wǎng)絡(luò)設(shè)置”。

有關(guān)系的幾個(gè)文件:
/components/findlist.vue; /store/modules/find.js; /fetch/api.js
find.js會(huì)調(diào)用api.js

問題描述:
因?yàn)楦鱾€(gè)場(chǎng)景都要用到,所以集中處理這個(gè)需求,就想到在/fetch/api.js的

axios.defaults.retry = 4;
axios.defaults.retryDelay = 1000;
let loading=0;
axios.interceptors.response.use(undefined, function axiosRetryInterceptor(err) {
    var config = err.config;
    if(!config || !config.retry) return Promise.reject(err);
    config.__retryCount = config.__retryCount || 0;
    if(config.__retryCount >= config.retry) {
       loading=1;
       return Promise.reject(err);
    }
    config.__retryCount += 1;
    
    var backoff = new Promise(function(resolve) {
        setTimeout(function() {
            resolve();
        }, config.retryDelay || 1);
    });
    return backoff.then(function() {
        return axios(config);
    });
});

向后臺(tái)請(qǐng)求也寫在這個(gè)文件里。

我設(shè)置了一個(gè)標(biāo)識(shí)loading,一旦超過四次,就變成1,但是當(dāng)這個(gè)loading變成1,就傳不到/store/modules/find.js中去,更傳不到/components/findlist.vue中所以無法實(shí)現(xiàn)效果。

ps:在api.js的export default{loading},只有調(diào)用的時(shí)候變量loading才出得去,后來在截獲函數(shù)里的賦值,就出不去了。

回答
編輯回答
心癌

你是想讓 /store/modules/find.js 和 /components/findlist.vue 都知曉loading這個(gè)變量的變化是嗎?
你使用vuex了么?可以吧loading變量變成全局可訪問的這樣任何如果有文件改動(dòng)了這個(gè)變量,那其他文件也會(huì)獲得改動(dòng)后的值的.

2017年4月9日 07:41