javascript - typescript window.setInterval() fungerer ikke riktig


Jeg har problemer med window.setInterval() metoden. Nedenfor er et eksempel på strukturen, metoden "repeat" blir kalt gjentatte ganger, men jeg kan ikke kalle noen metoder inne i "repeat". I eksemplet, når jeg instansierer manager (let m=new manager()), vil den skrive ut "Before Print", men vil ikke skrive ut loggen fra printStuff-metoden, eller meldingen "After Print".

Vet noen hvorfor dette skjer? Dette er åpenbart ikke min faktiske kode, da den er enkel nok til å ikke være i separate funksjoner, men min faktiske kode må kalle mange funksjoner i "repeat"-funksjonen, og den vil stoppe utførelsen når den finner et kall til en annen funksjon.

class manager{

constructor(){
    window.setInterval(this.repeat, 5000);
}

repeat(){
    console.log("Before Print");
    this.printStuff();
    console.log("After Print");
}

printStuff(){
    console.log("Print Stuff");
}

Svar #1

Set-interval vil ta this.repeat ut av konteksten, du må enten eksplisitt 'binde' metoden ved å bruke

setInterval(this.repeat.bind(this), 5000)

eller

setInterval(()=>this.repeat(), 5000)

Relaterte artikler