2

我正在尝试创建一个场景,其中我有两个变量(或更多)都分配给它们自己的 setInterval 对象,并且每个 setInterval 对象都有不同的函数和不同的毫秒值。目标是通过启动重复播放两个不同音频文件的功能在两者之间创建节奏。

我遇到的当前问题是这样的:

如果一个设置间隔设置为 1000,而另一个设置为 500,则每个设置都不会立即开始。毫秒延迟是开始时间的一部分。我想知道如何省略开始时间的延迟,以便两个功能立即启动,但随后它们各自保持各自的间隔时间。

到目前为止,我提出的“逻辑”类似于创建一个函数,该函数立即播放没有毫秒值的音频,然后将另一个函数分配给 setInterval,该函数在下一个开始播放 x 毫秒数“打”补差价。我很好奇逻辑是否合理,或者这是一个我不知道的“传统”javascript解决方案存在的问题。似乎有一种更简单的方法。

我还没有开始编码,尽管如果有人已经解决了这个问题,我不想在我不得不这样做之前给自己挖个洞。

谢谢

4

1 回答 1

1

我避免使用 setInterval。相反,我使用 setTimeout 和这样的模式:

function someThing() {
    // do something ...
    setTimeout(someThing, 2000);
    // or do something after setting the timeout ...
}

// either delay the start:
// setTimeout(someThing, 1000);
// or start right away
someThing()

但是,如果您真的想使用 setInterval,那么类似的模式可以工作:

function someThing(firstTime) {
    if (firstTime === true) {
        console.log('setting interval for someThing');
        setInterval(someThing, 1000);
    }

    console.log('someThing called');
}
someThing(true);
于 2012-05-31T11:24:23.630 回答