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);

Relaterte artikler