forked from github/dataease
Merge pull request #2419 from dataease/pr@dev@feat_request-cancel
feat: 切换仪表板自动取消之前未完成的数据请求
This commit is contained in:
commit
0254164857
@ -173,6 +173,10 @@ export default {
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 取消视图请求
|
||||
this.$cancelRequest('/chart/view/getData/**')
|
||||
this.$cancelRequest('/api/link/viewDetail/**')
|
||||
this.$cancelRequest('/static-resource/**')
|
||||
},
|
||||
computed: {
|
||||
mainActiveName() {
|
||||
|
@ -118,6 +118,20 @@ Vue.prototype.checkPermission = function(pers) {
|
||||
return hasPermission
|
||||
}
|
||||
Vue.use(deWebsocket)
|
||||
|
||||
Vue.prototype.$currentHttpRequestList = new Map()
|
||||
Vue.prototype.$cancelRequest = function(cancelkey) {
|
||||
if (cancelkey) {
|
||||
if (cancelkey.indexOf('/**') > -1) {
|
||||
Vue.prototype.$currentHttpRequestList.forEach((item, key) => {
|
||||
key.indexOf(cancelkey.split('/**')[0]) > -1 && item('Operation canceled by the user.')
|
||||
})
|
||||
} else {
|
||||
Vue.prototype.$currentHttpRequestList.get(cancelkey) && Vue.prototype.$currentHttpRequestList.get(cancelkey)('Operation canceled by the user.')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
new Vue({
|
||||
|
||||
router,
|
||||
|
@ -6,6 +6,7 @@ import Config from '@/settings'
|
||||
import i18n from '@/lang'
|
||||
import { tryShowLoading, tryHideLoading } from './loading'
|
||||
import { getLinkToken, setLinkToken } from '@/utils/auth'
|
||||
import Vue from 'vue'
|
||||
|
||||
const TokenKey = Config.TokenKey
|
||||
const RefreshTokenKey = Config.RefreshTokenKey
|
||||
@ -49,6 +50,7 @@ let service = axios.create({
|
||||
// request interceptor
|
||||
service.interceptors.request.use(
|
||||
config => {
|
||||
const CancelToken = axios.CancelToken
|
||||
const idToken = getIdToken()
|
||||
if (idToken) {
|
||||
config.headers[Config.IdTokenKey] = idToken
|
||||
@ -72,6 +74,10 @@ service.interceptors.request.use(
|
||||
}
|
||||
config.loading && tryShowLoading(store.getters.currentPath)
|
||||
|
||||
config.cancelToken = new CancelToken(function executor(c) {
|
||||
Vue.prototype.$currentHttpRequestList.set(config.url, c)
|
||||
})
|
||||
|
||||
return config
|
||||
},
|
||||
error => {
|
||||
@ -91,6 +97,7 @@ service.setTimeOut = time => {
|
||||
service.interceptors.response.use(response => {
|
||||
response.config.loading && tryHideLoading(store.getters.currentPath)
|
||||
checkAuth(response)
|
||||
Vue.prototype.$currentHttpRequestList.delete(response.config.url)
|
||||
return response.data
|
||||
}, error => {
|
||||
const config = error.response && error.response.config || error.config
|
||||
|
Loading…
Reference in New Issue
Block a user