javascript - setInterval og setTimeout i Typescript
Jeg lærer Typescript og prøver å skrive ut en konsollmelding flere ganger over en periode. Men i testen min skjer dette bare én gang, vet du hvorfor?
Koden er nedenfor:
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();
Svar #1
Problemet i koden din er der:
setInterval(this.printMsg(), 2000);
setInterval aksepterer en funksjon som første parameter. Uttrykket this.printMsg() er et kall på funksjonen, og er faktisk void. Det finnes to måter å fikse det på. Bruk lambda:
setInterval(() = > this.printMsg(), 2000);
Eller bruk bind:
setInterval(this.printMsg.bind(this), 2000);
