在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 放在 nextTick 或 setTimeout 中延迟执行,确保 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);
});

