我试图使用Typescript(和Angular 2)构建一个节拍器。 谢谢,@ Nitzan-Tomer(Typescript Loop with Delay),他帮助我完成了基础知识。
现在我正面临这个问题,在我开始节拍器之后,我无法改变间隔。想象一下滑块,改变声音之间的速度(=>间隔)。
let theLoop: (i: number) => void = (i: number) => {
setTimeout(() => {
metronome.play();
if (--i) {
theLoop(i);
}
}, 3000);
};
theLoop(10);
此处的间隔为3000.我希望能够在触发功能后更改它。 (也许还可以摆脱i: number
?因为它不应该只播放节拍器声音10次......
答案 0 :(得分:2)
这是一个简单的课程:
class Metronome {
private interval: number;
private timer: number;
constructor(interval = 3000) {
this.interval = interval;
}
start(): void {
this.tick();
}
stop() {
clearTimeout(this.timer);
}
setInterval(interval: number) {
this.interval = interval;
}
private tick() {
// do something here
this.timer = setTimeout(this.tick.bind(this), this.interval);
}
}