渐进式编程课
鸿蒙 目录
第 59 课2026.09.23

用户点击“重试关闭”后,不让上一次失败提示继续停留在进行中界面。

第 59 课:重试开始时清除旧失败提示

  • 日期:2026-09-23
  • 课程序号:第 59 课
  • 知识点:重试开始时复位界面错误提示

用途或适用场景

用户点击“重试关闭”后,不让上一次失败提示继续停留在进行中界面。

核心概念

只清空界面状态 errorMessage,不写入 Handle 的 closed;真实关闭结果仍由 handle.close() 决定。

最小代码或操作示例

在第 58 课保留的 ClosePage.close() 中,于防重入判断之后加入一行:

ts
async close(): Promise<void> {
  if (this.closing || this.handle.isClosed()) return
  this.errorMessage = ''
  this.closing = true
  try { await this.handle.close() }
  catch {
    this.errorMessage = '关闭失败,请重试'
    console.error('Handle.close failed')
  } finally { this.closing = false }
}

3~5 分钟练习

第一次关闭失败后立即重试,观察旧提示何时消失;再让第二次也失败。

参考答案

点击重试即清空旧提示;若第二次仍失败,catch 再显示一条新的通用提示。

与上一课的联系

继承第 58 课的“重试关闭”按钮与第 57 课的 close();本课只在新的尝试开始时清空旧 errorMessage;完成后下一课可分别呈现成功与失败结果。

时效校验

时效校验:2026-09-24(华为当前 Button、Text 文档及 Promise 异步操作资料;本机 HarmonyOS 26.0.0/API 26 SDK)。继续使用已核对的 onClick、Text 与 ArkTS Promise,未使用废弃接口。

官方参考