我有这个倒数计时器功能:
startTimer(duration) {
this.myTimer = duration;
setInterval(function () {
this.myTimer--;
console.log("TIMER: "+ typeof(this.myTimer) + " "+this.myTimer);
}, 1000);
}
我以这种方式打电话:this.startTimer(60);
这是console.log
:TIMER: number NaN
的结果。
因此typeof(this.myTimer)
会返回number
类型,当我打印其值时,我会获得NaN
。
为什么我会获得NaN
?
注意:我正在使用Angular2(typescript),我在构造函数之前以这种简单的方式在组件类中定义了myTimer
变量:
export class myComponent {
myTimer;
constructor(private navCtrl: NavController) {}
// my code (previous function is here)
}
答案 0 :(得分:2)
像Rayon在评论中所说,在setTimeout
函数回调中,您的this
函数与startTimer
函数不同myTimer
,因此undefined
不是成员它的。 NaN
操作后,--
变为var that = this
。
要解决此问题,您可以使用function startTimer(duration) {
this.myTimer = duration;
setInterval(() => {
this.myTimer--;
console.log("TIMER: "+ typeof(this.myTimer) + " "+this.myTimer);
}, 1000);
}
技巧或使用arrow function:
Fatal error: Uncaught exception 'Exception' with message 'Database Error [2014] Commands out of sync; you can't run this command now' in C:\wamp64\www\CubePicker\cube.php on line 21