HarmonyOS setTimeout和setInterval计时器某种特定情况下不工作

app的开屏广告页,有个倒计时。倒计时结束后进入主页面。但是登陆后,倒计时就会不工作。

子组件计时器代码:

async aboutToAppear() { 
    setTimeout(() => { 
      hilog.info(0x0000, TAG, '%{public}s', 'setTimeout 已执行' + this.countDownTime); 
    }, 1000) 
    setInterval(()=>{ 
      this.countDownTime -- 
      hilog.info(0x0000, TAG, '%{public}s', 'setInterval 已执行' + this.countDownTime); 
    }, 1000) 
  }
HarmonyOS
15h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

请参考一下demo:

import router from '@ohos.router' 
import { hilog } from '@kit.PerformanceAnalysisKit'; 
@Entry 
@Component 
struct SplashPage { 
  @State timer: number = 0 
  @State interval: number = 0 
  aboutToAppear() { 
    this.doSth() 
  } 
  aboutToDisappear(): void { 
    clearTimeout(this.timer) 
    clearInterval(this.interval) 
  } 
  doSth(){ 
    this.interval = setInterval(()=> { 
      hilog.info(0x0000, 'Interval_TAG', '%{public}s', 'setInterval 已执行'); 
    }, 2000) 
    this.timer = setTimeout(()=> { 
      hilog.info(0x0000, 'Timeout_TAG', '%{public}s', 'setTimeout 已执行'); 
      router.replaceUrl({ url: 'pages/MainPageController'}); 
    }, 2000) 
  } 
  build() { 
    Stack() { 
      // 背景 
      Image($r('app.media.splash')) 
        .width('100%') 
        .height('100%') 
        .objectFit(ImageFit.Cover) 
        .hoverEffect(HoverEffect.None) 
    } 
  } 
}

​参考文档:​https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-timer-V5#settimeout

分享
微博
QQ
微信
回复
6h前
相关问题
如何实现一个倒计时器
327浏览 • 1回复 待解决
HarmonyOS计时天数
111浏览 • 1回复 待解决
ForEach什么情况下会触发复用
590浏览 • 1回复 待解决
如何在多设备情况下使用hdc
565浏览 • 1回复 待解决
什么情况下会使用多Module
2166浏览 • 1回复 待解决
candidate 会在哪三种情况下退出?
3816浏览 • 1回复 待解决