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?
The code is below:
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();
The problem in your code is there:
setInterval(this.printMsg(), 2000);
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);
Or use bind:
setInterval(this.printMsg.bind(this), 2000);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With