Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用setInterval启动两个函数,并立即启动,无延迟_Javascript_Audio - Fatal编程技术网

Javascript 使用setInterval启动两个函数,并立即启动,无延迟

Javascript 使用setInterval启动两个函数,并立即启动,无延迟,javascript,audio,Javascript,Audio,我试图创建一个场景,其中两个(或更多)变量都分配给各自的setInterval对象,每个setInterval对象都有不同的函数和不同的毫秒值。目标是通过启动重复播放两个不同音频文件的功能,在两者之间创造节奏 我目前遇到的问题是: 如果一个设置间隔设置为1000,另一个设置为500,则不会立即启动。毫秒延迟是启动时间的一部分。我想知道如何省略启动时间上的延迟,以便两个函数立即启动,但它们各自保持各自的间隔时间 到目前为止,我提出的“逻辑”是这样的:创建一个函数,立即播放没有毫秒值的音频,然后将另

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

我目前遇到的问题是:

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

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

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


谢谢

我避免了设置间隔。相反,我将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);