如何停止加载在拦截器.r axios.拦截器.请求在 Ionic vue?

qacovj5a  于 2023-01-22  发布在  Ionic
关注(0)|答案(2)|浏览(180)

我正在学习本教程。
https://www.djamware.com/post/5fc19e3e77862f22905c7f03/ionic-5-tutorial-oauth2-login-example-vue
在本教程中,他将调用这个函数,该函数在每个axios请求时调用

mountRequestInterceptor() {
        this._requestInterceptor = axios.interceptors.request.use(async config => {
            console.log("show loading");
            const loading = await loadingController.create({
                message: 'Please wait...'
            });
            await loading.present();
           
                
           
            
            return config;
        });
        console.log(this._requestInterceptor,'sasdas')
    },

问题是应axios请求开始加载,但从未停止。
我希望它在请求成功时停止

b5buobof

b5buobof1#

我不确定您的代码有什么问题,但我没有看到_interceptors.response在哪里。
我做了同样的功能来拥有一个全局加载器。我在_interceptors.request中启动它,在_interceptors.response中关闭它。
也许这个博客能帮助你
https://codeburst.io/global-loader-component-using-vue-js-and-axios-interceptors-3880a136a4ac

ru9i0ody

ru9i0ody2#

是的,我也有同样的问题,如何修复它,您只需要添加一个函数来检查loadingController是否仍在运行。问题是为什么加载不想停止,因为该函数在处理数据时添加了另一个loadingController
可以添加此函数来检查loadingController是否仍在运行

const checkLoading = await loadingController.getTop();

所以你可以把函数改成这样,

mountRequestInterceptor() {
        this._requestInterceptor = axios.interceptors.request.use(async config => {
            const checkLoading = await loadingController.getTop();
            if (!checkLoading) {
                console.log("show loading");
                const loading = await loadingController.create({
                    message: 'Please wait...'
                });
                await loading.present();
            }
            return config;
        });
    },

相关问题