Я использую загрузку на axios после ответа axios, я предполагаю закрыть загрузчик, но иногда он закрывается при ответе axios, но иногда это не так. может быть из-за многократного запроса axios.
я хочу закрыть его, когда получен запрос axios
Я использую загрузчик глобально в своем api.service.js
import axios from "axios";
import {store} from '@/store';
import {TokenService} from "@/services/token.service";
import {loadingController} from '@ionic/vue';
const ApiService = {
_requestInterceptor: 0,
_401interceptor: 0,
init(baseURL)
{
axios.defaults.baseURL = baseURL;
},
setHeader() {
axios.defaults.headers.common[
"Authorization"
] = `Bearer ${TokenService.getToken()}`;
},
removeHeader() {
axios.defaults.headers.common = {};
},
get(resource ) {
console.info(TokenService.getToken())
return axios.get(resource);
},
post(resource, data) {
return axios.post(resource, data);
},
put(resource, data) {
return axios.put(resource, data);
},
delete(resource) {
return axios.delete(resource);
},
customRequest(data) {
return axios(data);
},
mountRequestInterceptor() {
this._requestInterceptor = axios.interceptors.request.use(async config => {
console.info("show loading");
const loading = await loadingController.create({
message: 'Please wait...'
});
await loading.present();
return config;
});
},
mount401Interceptor() {
this._401interceptor = axios.interceptors.response.use(
response => {
loadingController.dismiss()
console.info('close')
return response;
},
async error => {
loadingController.dismiss().then(r => console.info(r));
if (error.request.status === 401) {
if (error.config.url.includes("/api/staff/token")) {
await store.dispatch("/api/staff/logout");
throw error;
} else {
try {
await store.dispatch("auth/refreshToken");
return this.customRequest({
method: error.config.method,
url: error.config.url,
data: error.config.data
});
} catch (e) {
throw error;
}
}
}
throw error;
}
);
},
unmount401Interceptor() {
axios.interceptors.response.eject(this._401interceptor);
}
}
export default ApiService;
вот моя функция, в которой я вызываю axios api
getGangWorkers() {
let gang_boss_id = this.userInfo.id;
loadingController.dismiss();
return ApiService.customRequest({
method: "get",
url: `/api/gangBoss/get-gang-workers/${gang_boss_id}/${this.work_order_id}`,
}).then((response) => {
this.workers = response.data.workers;
});
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Можно добавить наконец после улова. Наконец, убедитесь, что вы выполнили команду, даже если вызов Axios завершился или завершился ошибкой.