Typescript 中的 setInterval 和 setTimeout [英] setInterval and setTimeout in Typescript
本文介绍了Typescript 中的 setInterval 和 setTimeout的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在学习 Typescript,并尝试在一段时间内多次打印控制台消息.但在我的测试中,这种情况发生过一次,你知道原因吗?
I am learning Typescript and am trying to print a console message a number of times over a period of time. But in my test this happens once, you know the reason?
代码如下:
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
.有两种方法可以修复它.使用拉姆达:
setInterval
accepts a function as a first parameter. Expression this.printMsg()
is a call of the function, and is void
actually. There are two ways to fix it. Use lambda:
setInterval(() = > this.printMsg(), 2000);
或者使用绑定:
setInterval(this.printMsg.bind(this), 2000);
这篇关于Typescript 中的 setInterval 和 setTimeout的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文