#鸿蒙通关秘籍#如何避免在组件的属性刷新过程中执行耗时操作?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
hm673ff0a9c5234

在高频属性刷新过程中,避免直接在属性计算中加入耗时操作。使用异步任务池如taskpool处理复杂计算,然后将结果赋值给属性,确保组件刷新是无阻滞的。

import taskpool from '@ohos.taskpool';

@Concurrent
function getHeight(): number {
  let height = 0;
  for (let index = 0; index < 1000000; index++) {
    height += 0.0001;  // 模拟耗时操作
  }
  return height;
}

taskpool.execute(getHeight).then((value: Object) => {
  AppStorage.setOrCreate('height', value);
});

@Entry
@Component
struct Index {
  @State rowWidth: number = 100;
  @StorageLink('height') rowHeight: number = 0;

  build() {
    Column({ space: 10 }) {
      Button('change row width').onClick(() => {
        this.rowWidth += 20;
        if (this.rowWidth > 200) {
          this.rowWidth = 100;
        }
      })
      Row().width(this.rowWidth).height(this.rowHeight).backgroundColor(Color.Blue)
    }
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
ArkTS如何处理耗时操作
470浏览 • 1回复 待解决
HAP编译过程中,本地依赖tgz
790浏览 • 1回复 待解决