Typescript 中的 setInterval 和 setTimeout [英] setInterval and setTimeout in Typescript

查看:196
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆