Runtime 调用的 Host presentation.hideLoading operation 成功结束并返回 bridge 响应后,
Promise 以 void resolve。返回值不说明此前是否存在 Loading,也不承诺等待 Host 的退出动画完成。
HbMiniProgramSDKError
当前 Host 未开放 presentation.hideLoading 时以 METHOD_FORBIDDEN 拒绝;旧 Runtime 不认识
ui.hideLoading 时可返回 METHOD_NOT_FOUND。bridge、Runtime 卸载、请求超时或 Host operation
失败时抛出对应 SDK 错误;Host 明确表示当前请求不受支持时可返回 REQUEST_UNSUPPORTED。
该方法不接收参数,无需在 package.json#heybox.permissions 中声明权限,也不要求可信用户手势。
它只请求隐藏 Host 当前持有的全局 Loading,不会关闭 Toast 或其他 UI 反馈。
SDK 与 Runtime 都不维护 Loading 是否可见、展示次数、引用计数或调用栈。每次调用都会独立发送并
转发到 Host;连续调用不会在 Runtime 合并,也不需要按此前 showLoading() 的调用次数循环隐藏。
多个并发流程共用同一个全局 Loading 时,一个流程的 hideLoading() 可能隐藏另一个流程展示的
Loading,调用方需要在业务层协调所有权或自行维护计数。
当前没有 Loading 时,行为由 Host 决定,公共契约不保证统一幂等:Browser Dev Host 会成功空操作,
Mobile 与 PC Runtime 仍会把请求转发给实际 Host,由 Host 决定成功、空操作或报错。因此不要用
hideLoading() 的 resolve/reject 探测 Loading 是否可见,也不要据此推进业务状态。
当当前异步流程拥有 Loading 时,应在 finally 中清理,使成功和失败路径都会尝试隐藏。
ui.showLoading() 的 dismissible: true 不提供用户关闭回调;即使用户
可能已经手动关闭,流程结束时仍可按 Host 语义调用本方法。若清理失败不能覆盖原始业务错误,
应在应用层单独捕获并记录清理错误。
import hbSDK from '@heybox/hb-sdk'
let loadingShown = false
try {
await hbSDK.ui.showLoading({ dismissible: false })
loadingShown = true
await saveChanges()
} finally {
if (loadingShown) {
await hbSDK.ui.hideLoading()
}
}
隐藏当前全局 Loading。