vue工程全域性設定ajax的等待動效

2021-09-12 17:02:16 字數 1493 閱讀 5181

最近在做vue的專案,使用了element-ui作為ui元件庫,採用vuex進行狀態管理,與後台的請求互動採用axios庫實現,原本做的頁面,ajax請求個數也只有三個,將等待動畫的顯示和隱藏通過mutation去控制,但是專案越來越大,請求也越來越多,能否將這個等待動畫與ajax的請求相關聯呢?

在element-ui中,提供了兩個方法進行呼叫loading元件,乙個是在需要遮罩的div容器中新增v-loading指令,另一種就是以服務形式呼叫:loading.service(options),在本專案中,在載入資料時,進行全域性遮罩,所以設定let loadinginstance = loading.service()。關閉服務形式的呼叫:loadinginstance.close();

個人對***的作用的理解是,在請求傳送前和響應處理前,對該ajax請求進行一定的設定或者處理,方便對工程內的ajax請求進行統一處理,減少重複**。

//請求***

axios.interceptors.request.use((config) => , (error) => );

// 新增響應***

axios.interceptors.response.use((response) => , (error) => );

有了***,我們可以想到,在ajax請求傳送前開啟loading動畫,在接收響應後關閉loading動畫。但是要對每個ajax都開關一下loading動畫嗎?其實不必。只需要實現乙個ajax的計數器,在個數大於0時,開啟動畫,在個數為0的時候,關閉動畫。

let loadcounter = (function());

} else )}}

}return ,

decrement()

}})();

在具體的專案工程裡應用時,需要非同步關閉loading,這是因為在有些時候,ajax請求傳送的很快,還沒有完全開啟動畫時,就已經關閉動畫,這時的動畫時不能關閉的,通過非同步呼叫的方法可以保證動畫的關閉都是有效的,不會出現動畫關不掉的問題。$nexttick與vue元件例項生命週期相關,它指向的this必須是個vue元件,在實際應用時,可以將全域性的vue元件作為this的指向。

//請求***

axios.interceptors.request.use((config) => , (error) => );

// 新增響應***

axios.interceptors.response.use((response) => , (error) => );

在實際專案中,需要對一些不需要顯示等待動效的ajax請求進行設定例外,我將這些請求新增在白名單內,在計數器中設定白名單列表,修改如下。

let loadcounter = (function()

});if(valid));

}} else )}}

}return ,

decrement()

}})();

vue工程全域性設定ajax的等待動效

最近在做vue的專案,使用了element ui作為ui元件庫,採用vuex進行狀態管理,與後台的請求互動採用axios庫實現,原本做的頁面,ajax請求個數也只有三個,將等待動畫的顯示和隱藏通過mutation去控制,但是專案越來越大,請求也越來越多,能否將這個等待動畫與ajax的請求相關聯呢?在...

ajax 全域性設定的方法

設定ajax的全域性預設選項 ajaxsetup error function jqxhr,textstatus,errormsg 未設定任何引數,但url async type headers error等引數的預設值均已被 ajaxsetup 更改 如上 ajax 設定了url type suc...

使用AJAX時 設定ajax全域性變數

ajaxsetup jquery.ajaxsetup 函式用於設定ajax的全域性預設設定。該函式用於更改jquery中ajax請求的預設設定選項。之後執行的所有ajax請求,如果對應的選項引數沒有設定,將使用更改後的預設設定。該函式屬於全域性jquery物件。jquery 1.1 新增該靜態函式。...