如何在axios中编写条件拦截器

Mah*_*ani 3 axios

我可以为 Axios 管道添加拦截器。另外,我需要加载程序是基于条件的。情况是某些请求可以在后台运行,不需要加载程序来阻止 UI。在这种情况下,我可以通过发送一个额外的参数来让 Axios 知道 isBackground 调用。我怎样才能实现这个目标?

      axios.interceptors.request.use((config) => {
            this.isLoading = true; // Or trigger start loader
            return config
        }, (error) => {
            this.isLoading = false  // Or trigger stoploader
            return Promise.reject(error)
        })

        axios.interceptors.response.use((response) => {
            this.isLoading = false    // Or trigger stoploader
            return response
        }, function(error) {
            this.isLoading = false   // Or trigger stoploader
            return Promise.reject(error)
        })
Run Code Online (Sandbox Code Playgroud)

Mic*_*evý 5

isBackground只需在配置上使用您自己的自定义属性,如下所示:

  axios.interceptors.request.use((config) => {
    console.log(config.isBackground)
    return config
  }, (error) => {
    console.log(error.config.isBackground)
    return Promise.reject(error)
  })

  axios.interceptors.response.use((response) => {
    console.log(response.config.isBackground)
    return response
  }, function(error) {
    console.log(error.config.isBackground)
    return Promise.reject(error)
  })

  const config = {
    isBackground: true
  }

    axios.get('https://httpbin.org/get', config)
    .then(response => {
        console.log(response)
    })
    .catch(error => {
        console.log(error)
    })
Run Code Online (Sandbox Code Playgroud)

请注意,当前版本 0.19.0 中有一个错误等待修复,该错误会破坏此功能。在0.18版本中工作正常...

小提琴