在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

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

場景需求:

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

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

問題描述:
因為各個場景都要用到,所以集中處理這個需求,就想到在/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);
    });
});

向后臺請求也寫在這個文件里。

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

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

回答
編輯回答
心癌

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

2017年4月9日 07:41