使用setInterval启动两个函数,让它们立即启动,没有延迟

时间:2012-05-31 11:18:49

标签: javascript audio

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

我遇到的当前问题是:

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

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

我还没有开始编码,虽然我不想在必须之前挖一个洞,如果有人已经解决了这个问题。

由于

1 个答案:

答案 0 :(得分: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);