渐进式编程课
鸿蒙 目录
第 56 课2026.09.18

关闭操作未完成时显示进度文字,并在操作结束后重新读取 Handle 的结果。

第 56 课:异步关闭期间显示进行中状态

  • 日期:2026-09-18
  • 课程序号:第 56 课
  • 知识点:异步关闭期间显示进行中状态

用途或适用场景

关闭操作未完成时显示进度文字,并在操作结束后重新读取 Handle 的结果。

核心概念

closing 是纯界面交互状态;真正的关闭结果仍来自上一课的 handle,finally 只恢复进行中状态并触发界面重绘。

最小代码或操作示例

ts
@State closing: boolean = false

async close(): Promise<void> {
  if (this.closing || this.handle.isClosed()) return
  this.closing = true
  try { await this.handle.close() } finally { this.closing = false }
}

build() {
  Button(this.handle.isClosed() ? '已关闭' : this.closing ? '关闭中…' : '关闭')
    .enabled(!this.closing && !this.handle.isClosed())
    .onClick(() => { this.close() })
}

3~5 分钟练习

把进行中文字改为“正在关闭”。

参考答案

将 Button 的真值分支改为 '正在关闭'。

与上一课的联系

继承第 55 课的 ClosePage、handle.close() 与 handle.isClosed();本课只增加 @State closing 与异步方法,finally 重绘后再读取 handle 事实;完成后下一课可显示关闭失败信息。

时效校验

时效校验:2026-09-24(华为当前 Button、禁用控制与 Promise 官方资料;本机 HarmonyOS 26.0.0/API 26 SDK)。onClick、enabled 自 API 7 可用,本机声明未见 @deprecated 或 @useinstead。

官方参考