第 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。