javascript - Typescript 中的 setInterval 和 setTimeout

标签 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();

最佳答案

您的代码中存在问题:

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/

相关文章:

javascript - 错误 : Error parsing url: undefined when migrating database to heroku

javascript - Google map API - 自动完成英国县

javascript - 如何从 setInterval 函数返回值?

javascript - NodeJs setTimeout 的clearTimeout 唯一ID

javascript - 递归地循环遍历树,并在迭代之间设置超时

javascript - 如何修复仅 IE 上的图像损坏问题?

javascript - 如何测试 Angular $scope 函数?

javascript - 运算符 '+' 不能应用于类型 'number[]' : How could I correct the build error?

javascript - Angular 2 着陆页

angular - 如何使用angular 5下载具有blob功能的文件