赞
踩
在 onPageshow()方法中调用定时器
startCount() { let timer = setInterval(function(){ if (this.stop_timer) { clearInterval(timer) } console.log('setTimeout do after 1s delay.'); try { this.cot = this.cot + 1; } catch (e) { console.log('setTimeout do after 1s delay.' + e); } }.bind(this), 1500) }
注意 setInterval 一定要 在后面绑定 当前的页面,否则funtion中访问变量会报undifined
.bind(this) ,不绑定的话,this的指向就是 funtion里面 了
完整代码:
@Entry @Component struct TimerPage { @State message: string = '定时器' @State cot: number = 0 @State stop_timer:boolean = false; onPageShow() { // clearTimeout(timeoutID); this.startCount() } aboutToAppear() { } build() { Column({ space: 20 }) { Text(this.message + this.cot) .fontSize(50) .fontWeight(FontWeight.Bold) .width('100%') .textAlign(TextAlign.Center) .height(150) .backgroundColor(Color.Red) Text("dianji ") .fontSize(50) .fontWeight(FontWeight.Bold) .width('100%') .textAlign(TextAlign.Center) .onClick(() => { this.cot++; }) .height(150) .backgroundColor(Color.Blue) Text("清空定时器") .fontSize(50) .fontWeight(FontWeight.Bold) .width('100%') .textAlign(TextAlign.Center) .onClick(() => { this.stop_timer= true; }) .height(150) .backgroundColor(Color.Orange) }.height('100%').justifyContent(FlexAlign.Center) } startCount() { let timer = setInterval(function(){ if (this.stop_timer) { clearInterval(timer) } console.log('setTimeout do after 1s delay.'); try { this.cot = this.cot + 1; } catch (e) { console.log('setTimeout do after 1s delay.' + e); } }.bind(this), 1500) } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。