我很遗憾。我试图同步一个最终会与歌曲同步的秒表。我想要一个" up"或" down"根据歌曲中的歌词显示的消息。如果你好奇它的花 - Moby为莎莉推高挑战。
我对编码很陌生,这只是学习编码的一个想法。
这是使用Angular 2的plunker:https://plnkr.co/edit/eIKDfbR0BSGj7jV5cpJH。我实际上将使用Ionic 2.
以下是我尝试过的以及为什么我认为它不起作用:
上/下消息的主要功能是upDown();
我最初的想法是创建一个时间间隔数组,然后将其传递给setTimeout。
我引用了这个stackoverflow question关于如何遍历数组和usung setTimeout。
当它工作时我很高兴,但后来我玩了间隔。那时我才知道为什么知道setTimeout是异步的很重要。此外,setTimeout不会停止循环。我想我必须做一个clearTimeout或者其他什么。
我的下一个想法是以某种方式跟踪秒表时间并说出
伪代码:
if (this.time === 1000) {this.message= "up"}
if (this.time === 2000) {this.message= "down"}
etc.
然而,我在这方面做得还不错。因为我还没有接近,所以我的尝试不在那个吸引人的链接中。
总的来说,大约有60个向上的动作,大约有5个独特的时间间隔,但它们都非常随机。
如果你不想看看plunker,这是upDown()代码:
upDown() {
this.toggle() //starts the stopwatch
let action: boolean = false;
for (let i = 0; i < this.intervals.length; i++) {
((index) => {
setTimeout(() => {
if (action) {
this.message = "down";
action = false;
} else {
this.message = "up";
action = true;
};
}, index);
})(this.intervals[i]);
}
}
这是一项正在进行中的工作....如果有人想知道为什么我有将Srvc放入其中的函数是因为我最终将它们转移到服务中。