使用秒表同步消息.. setTimeout无法正常工作

时间:2016-04-19 16:04:09

标签: javascript typescript ionic-framework angular

我很遗憾。我试图同步一个最终会与歌曲同步的秒表。我想要一个" 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放入其中的函数是因为我最终将它们转移到服务中。

0 个答案:

没有答案