我正在学习 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();
最佳答案
您的代码中存在问题:
setInterval(this.printMsg(), 2000);
setInterval
接受一个函数作为第一个参数。表达式this.printMsg()
是函数的调用,实际上是void
。有两种方法可以修复它。使用 lambda:
setInterval(() = > this.printMsg(), 2000);
或者使用绑定(bind):
setInterval(this.printMsg.bind(this), 2000);
关于javascript - Typescript 中的 setInterval 和 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49091543/