我可以为 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)
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版本中工作正常...
归档时间: |
|
查看次数: |
3593 次 |
最近记录: |