我正在学习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
期望一个函数引用,就像你在timeout中提供的匿名函数一样。 - Sterling Archer()
会破坏this.msg
。但使用this.pringMsg.bind(this)
就可以解决这个问题。 - Jake Holzinger