在uni-app中uni.$on的回调中调用uni.showLoading不会显示加载动画

在uni-app中uni.$on的回调中调用uni.showLoading不会显示加载动画

开发环境 版本号 项目创建方式
Windows HBuilderX

示例代码:

uni.$on('assignedepInline', (res)=>{  
    uni.showLoading({  
        title:"提交中",  
        mask:true  
    })  
    // 隐藏按钮  
    this.showBtn = false;  
    // 提交  
    this.assignedepSubmit(res);  
});

操作步骤:

uni.$on('assignedepInline', (res)=>{  
    uni.showLoading({  
        title:"提交中",  
        mask:true  
    })  
    // 隐藏按钮  
    this.showBtn = false;  
    // 提交  
    this.assignedepSubmit(res);  
});
`

更多关于在uni-app中uni.$on的回调中调用uni.showLoading不会显示加载动画的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

uni.$emit 正常触发了嘛?

更多关于在uni-app中uni.$on的回调中调用uni.showLoading不会显示加载动画的实战教程也可以访问 https://www.itying.com/category-93-b0.html


触发了的,我看有其他人报告在弹窗后回调也不行,然后给的建议是setTimeout来包一层,我也只能这样包一层,现在能显示出来了

在 uni-app 中,uni.$on 的回调函数中直接调用 uni.showLoading 可能不会显示加载动画,这是因为事件监听的回调执行时机与页面渲染线程存在冲突。当 uni.$on 的回调被触发时,如果当前正在执行同步任务(如隐藏按钮或提交逻辑),showLoading 的动画可能被阻塞,导致无法显示。

建议将 showLoading 放在 nextTicksetTimeout 中延迟执行,确保 UI 更新完成。修改后的代码示例:

uni.$on('assignedepInline', (res) => {  
    this.$nextTick(() => {  
        uni.showLoading({  
            title: "提交中",  
            mask: true  
        });  
    });  
    // 隐藏按钮  
    this.showBtn = false;  
    // 提交  
    this.assignedepSubmit(res);  
});

或者使用 setTimeout

uni.$on('assignedepInline', (res) => {  
    setTimeout(() => {  
        uni.showLoading({  
            title: "提交中",  
            mask: true  
        });  
    }, 0);  
    this.showBtn = false;  
    this.assignedepSubmit(res);  
});
回到顶部