【elemen/js】阻塞UI线程导致的开关卡顿如何优化

如上图,关闭开关时由于我的方法中有报告生成过程,会阻塞UI线程,在导出完成之前,用户界面会完全冻结,造成卡顿感

javascript 复制代码
const handlePowerSwitch = async on => {
  consoleStore.runningInfo = { ...consoleStore.info };
  const res = await appStore.changePowerAction(on);
  // 若开关机失败 开关要复原
  if (!res.success) {
    appStore.power_action = !on;
  }
  // 单机版停止调度时记录仿真报告
  if (appStore.features === 'emulator' && !on) {
    if (window.exportSimulationReport) {
      window.exportSimulationReport();
    }
  }
  
};

为了防止界面卡顿,我们需要让导出操作异步执行,不阻塞主线程。使用 setTimeout 让出控制权:

javascript 复制代码
const handlePowerSwitch = async on => {
  consoleStore.runningInfo = { ...consoleStore.info };
  const res = await appStore.changePowerAction(on);
  // 若开关机失败 开关要复原
  if (!res.success) {
    appStore.power_action = !on;
  }
  // 单机版停止调度时记录仿真报告
  if (appStore.features === 'emulator' && !on) {
    if (window.exportSimulationReport) {
      setTimeout(() => {
        window.exportSimulationReport();
      }, 100);
    }
  }
  
};
相关推荐
薇茗2 分钟前
【初阶数据结构】 升沉有序的平仄 排序 3
c语言·开发语言·数据结构·算法·排序算法·文件归并排序
字节高级特工4 分钟前
C++11(一) 革新:右值引用与移动语义
java·开发语言·c++·人工智能·后端
安妮的小熊呢5 分钟前
CRMEB标准版v6.0: 商城DIY装修新升级,PS级自由设计!
运维·javascript·平面·信息可视化·小程序·开源软件
安生生申6 分钟前
uni-app 连接 JDY-31 蓝牙串口模块实践
c语言·前端·javascript·stm32·单片机·嵌入式硬件·uni-app
AI科技星9 分钟前
强哥德巴赫猜想(1+1)终极证明(2026 年5月 21 日)
开发语言·人工智能·算法·计算机视觉·量子计算
Liu.77410 分钟前
Vue3结合Element Plus封装点击查看大图的自定义指令
javascript·vue.js·elementui
lqj_本人11 分钟前
鸿蒙PC:electron-markdownify 从普通 Electron 迁移到 OpenHarmony Electron HAP 的完整实践
前端·javascript·electron
故事和你9114 分钟前
洛谷-【图论2-4】连通性问题2
开发语言·数据结构·c++·算法·动态规划·图论
Brilliantwxx15 分钟前
【C++】 二叉搜索树
开发语言·c++·算法
为何创造硅基生物9 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言