先写一个 loading.js 文件:
import { Loading } from 'element-ui'; let loadingCount = 0; let loading; const startLoading = () => { loading = Loading.service({ lock: true, text: '加载中……', background: 'rgba(0, 0, 0, 0.7)' }); }; const endLoading = () => { loading.close(); }; export const showLoading = () => { if (loadingCount === 0) { startLoading(); } loadingCount += 1; }; export const hideLoading = () => { if (loadingCount <= 0) { return; } loadingCount -= 1; if (loadingCount === 0) { endLoading(); } };
再在 axios 的 interceptor 中调用:
import { showLoading, hideLoading } from './loading'; /* 请求拦截器(请求之前的操作) */ ajax.interceptors.request.use((req) => { showLoading(); return req; }, err => Promise.reject(err)); /* 请求之后的操作 */ ajax.interceptors.response.use((res) => { hideLoading(); return res; return Promise.reject(res); }, (err) => { hideLoading(); return Promise.reject(err); });