Jav*_*mer 1 timer setinterval typescript ionic-framework angular
这是一个打字稿类。我正在尝试访问setInterval函数中的开始时间和计数。我之前已经设置了值,为什么我们会得到undefined和NaN?以及如何解决这个问题?
startTimer() {
this.startTime = new Date();
this.count = 100;
console.log("STARTTIME: " + this.startTime); //RESULT: Mon Dec 17..etc
console.log("COUNT: " + this.count); //RESULT: 100
this.timer = setInterval(function () {
console.log("STARTTIME: " + this.startTime); //Undefined
this.count += 1;
console.log("COUNT: " + this.count); //NaN
}, 1000);
}
Run Code Online (Sandbox Code Playgroud)
尝试使用粗箭头代替函数
(来自文档)
this传统上一直是JavaScript的痛点。正如一个明智的人曾经说过的那样:“我讨厌JavaScript,因为它会this轻易失去所有含义。” 粗箭头通过从周围上下文中捕获其含义来修复此问题。
因此,请像这样使用它:
setInterval(() => { // <-----
console.log("STARTTIME: " + this.startTime);
this.count += 1;
console.log("COUNT: " + this.count);
}, 1000);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |