在Typescript中的setInterval和setTimeout

时间:2018-03-04 03:03:58

标签: javascript typescript settimeout setinterval

我正在学习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();

1 个答案:

答案 0 :(得分:6)

您的代码中存在问题:

setInterval(this.printMsg(), 2000);

setInterval接受函数作为第一个参数。表达式this.printMsg()是函数的调用,实际上是void。有两种方法可以解决它。使用lambda:

setInterval(() = > this.printMsg(), 2000);

或者使用bind:

setInterval(this.printMsg.bind(this), 2000);