You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 16:12:40