HarmonyOS 鸿蒙Next promptAction.showToast后续支持单例形式吗?

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next promptAction.showToast后续支持单例形式吗?

在项目中,尤其时调用接口时,会使用promptAction.showToast进行相应的提示。

存在这样一种场景:(仅支持一端登录)如果当前端被踢下线,存在短时间内调用了多个接口,会执行promptAction.showToast多次,UI上出现多个toast,交替出现的情况。

或者时,某场景下,1秒内调用了n个接口,并多次执行了promptAction.showToast,也会存在toast交替出现情况

请问,有没有单例形式来控制?对于同一个弹出内容(假设每次toast时长2s),多次弹出时,只取交集。如:第一个在第0秒弹出;第二个在第1秒弹出;第三个在1.2秒弹出;则:从0秒开始弹出,一直持续3.2秒结束。中间不要有交替出现的情况。


更多关于HarmonyOS 鸿蒙Next promptAction.showToast后续支持单例形式吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

可以定义一个节流函数throttle,设置间隔时间来控制单个事件(例如弹窗事件)的触发

function throttle(func: Function, interval: number) {
  let lastTime = 0;
  return () => {
    const nowTime = Date.now();
    const remainTime = interval - (nowTime - lastTime);
    if (remainTime <= 0) {
      lastTime = nowTime;
      func();
    }
  };
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct ThrottleTest {
  [@State](/user/State) num: number = 0
  build() {
    Row() {
      Column() {
        Text(this.num.toString())
        Button("click").onClick(throttle(() => {
          this.num++
        }, 5000))
      }.width('100%')
    }.height('100%')
  }
} 

更多关于HarmonyOS 鸿蒙Next promptAction.showToast后续支持单例形式吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


自己写个工具类,内部队列管理一下吧

HarmonyOS 鸿蒙在Next promptAction.showToast的后续版本中,是否支持单例形式,取决于鸿蒙系统的API设计与更新策略。根据当前官方文档及公开信息,鸿蒙系统的API设计注重模块化和可扩展性,但对于特定功能(如showToast)是否以单例模式实现,并未明确说明。

在鸿蒙应用开发中,showToast通常用于显示短时间的提示信息,其实现方式多为静态方法调用,直接显示消息而无需关心实例的创建与销毁。这种设计符合Toast提示的即时性和短暂性特点,减少了内存开销和复杂性。

若鸿蒙系统未来更新中引入了对showToast的单例支持,将可能通过系统级优化,进一步提升性能和资源利用率。然而,这一改变需以官方文档或更新公告为准。

因此,对于HarmonyOS 鸿蒙Next promptAction.showToast后续是否支持单例形式,目前无法给出确切答案。开发者应持续关注鸿蒙系统的更新动态和官方文档,以获取最新、最准确的信息。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部