Sáv*_*res 3 javascript settimeout setinterval typescript
我正在学习Typescript,并试图在一段时间内多次打印控制台消息.但在我的测试中,这发生了一次,你知道原因吗?
代码如下:
class Class {
private msg: string;
constructor(msg: string) {
this.msg = msg;
}
private printMsg(): void {
console.log(this.msg);
};
public repeatMsg(): void {
let intervalo = setInterval(this.printMsg(), 2000);
setTimeout(function() {
clearInterval(intervalo);
}, 40000);
}
}
let test: Class;
test = new Class("Hello");
test.repeatMsg();
Run Code Online (Sandbox Code Playgroud)
您的代码中存在的问题是:
setInterval(this.printMsg(), 2000);
Run Code Online (Sandbox Code Playgroud)
setInterval接受函数作为第一个参数.表达式this.printMsg()是函数的调用,void实际上是.有两种方法可以解决它.使用lambda:
setInterval(() = > this.printMsg(), 2000);
Run Code Online (Sandbox Code Playgroud)
或者使用bind:
setInterval(this.printMsg.bind(this), 2000);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7123 次 |
| 最近记录: |