使用 lodash 去抖动 axios 拦截器实例?

时间:2021-06-09 19:36:15

标签: javascript vue.js axios debounce

我正在使用称为网络繁忙状态的状态道具来切换 UI 中的元素。

因为状态可以非常快地来回变化,我的微调器看起来像是坏了。

有没有简单的方法,使用 lodash _.debounce 来限制这段代码?

const instance = axios.create({
  baseURL: environment.CUSTOM_BASE_URL,
});

instance.interceptors.request.use((config) => {
  store.commit("setNetworkBusyStatus", true);
  return config;
});

instance.interceptors.response.use(
  (response) => {
    store.commit("setNetworkBusyStatus", false); // wait for X ms because this is going to get set back to true in a millisecond.
    return response;
  },
  (error) => {
    if ([401, 403].includes(error.response.status)) {
      store.commit("delUserData");
      router.push("/login");
    }
    return Promise.reject(error);
  },
);

1 个答案:

答案 0 :(得分:0)

你这样做

import _ from 'lodash'
// vuex code
mutations:{
   setNetworkBusyStatus= _.debounce(function(){
    xxxx
})
}
// axios code
instance.interceptors.response.use(
  (response) => {
    store.commit("setNetworkBusyStatus", false); // wait for X ms because this is going to get set back to true in a millisecond.
    return response;
  },
  (error) => {
    if ([401, 403].includes(error.response.status)) {
      store.commit("delUserData");
      router.push("/login");
    }
    return Promise.reject(error);
  },
);

相关问题