setInterval中的计时器在setTimeout中播放时播放速度快4倍

时间:2013-10-21 10:40:44

标签: javascript jquery settimeout setinterval

我正在构建一个带有循环选项的基于JavaScript的乐器。 要创建循环,首先记录笔记,它们的持续时间,间隙(在笔记之间)和整个循环的总时间。

例如,这就是我记录音符之间差距的方法:

$('.pad').on('touchstart', function(){
    if (gapCount != null) {
        clearInterval(gapCount)
        loopInfo.push(noteInfo);
    }
    gapCount = setInterval(function () {
        noteInfo.gap++
    },1);
})

在我记录间隙的时间和总持续时间(以毫秒为单位)之后,我将信息传递给播放循环功能。然后我没有在音符之间暂停我刚刚录制的时间,而是播放所有内容的速度提高了4倍。这真的很奇怪,这种行为的原因是什么?

gap = loopInfo[i].gap;
setTimeout(function () {
    PlayNoteInLoop(i)
}, gap) // the same number recorded in the function above, but in reality playing it 4 times faster`

0 个答案:

没有答案