WebIX如何在方法执行期间显示加载图标而非依赖延迟?
WebIX 手动控制进度图标显示/隐藏
你可以通过拆分显示和隐藏逻辑,手动控制进度图标的生命周期,适配同步或异步任务场景:
1. 封装通用的显示/隐藏函数
先把进度图标的显示和隐藏拆成独立函数,方便复用:
// 显示进度图标并禁用视图 function showProgress() { const topView = $$("topView"); topView.disable(); topView.showProgress({ type: "icon", hide: false // 关闭自动隐藏,由手动控制 }); } // 隐藏进度图标并启用视图 function hideProgress() { const topView = $$("topView"); topView.enable(); topView.hideProgress(); }
2. 同步任务场景
如果你的任务是同步执行(比如计算、同步DOM操作),直接按顺序调用即可:
function A() { // 开始执行任务,显示进度图标 showProgress(); // 执行你的同步任务 // 示例:模拟耗时同步操作 for (let i = 0; i < 10000000; i++) { // 业务逻辑处理 } // 任务完成,隐藏进度图标 hideProgress(); }
3. 异步任务场景
如果任务是异步的(比如AJAX请求、Promise操作),必须把隐藏逻辑放在异步回调里,避免进度图标一闪而过:
基于WebIX AJAX的异步任务
function A() { showProgress(); // 发起异步请求 webix.ajax().get("/your-api-url", function(text, response) { // 处理接口返回数据 console.log(response.json()); // 异步任务完成,隐藏进度 hideProgress(); }); }
基于Promise/Async-Await的异步任务
async function A() { showProgress(); try { // 调用返回Promise的异步函数 const data = await fetchYourData(); // 处理数据 processData(data); } catch (error) { // 捕获并处理错误 console.error("任务执行失败:", error); } finally { // 无论成功或失败,都隐藏进度图标 hideProgress(); } } // 示例异步数据获取函数 function fetchYourData() { return new Promise((resolve) => { setTimeout(() => { resolve({ id: 1, name: "示例数据" }); }, 2000); }); }
关键注意事项
- 缓存
$$("topView")实例,避免重复查找DOM元素,提升性能; - 异步任务务必将
hideProgress()放在回调/finally块中,确保进度图标能正常隐藏; - 使用
try/finally可以保证即使任务执行出错,进度图标也不会一直停留在页面上。
内容的提问来源于stack exchange,提问作者Jeevan
相关产品推荐
相关产品推荐

