Chrome扩展程序:循环播放数组并根据每分钟节拍产生声音

时间:2017-08-23 00:28:56

标签: javascript google-chrome-extension

所以,让我们说我有一个像这样的数组和一个for循环迭代它:

var song = ['A', 'A', 'A'];
for (let n = 0; n < song.length; n++) {
  // run 'the function' at 100 BPM...
  // what I tried:
  setTimeout(function() {
    the function // obviously this won't work
  }, beatsPerMinute);
}

我已经编写了一个函数,它接受那些字母字符串并将它们转换为声音。我面临的问题是时机问题。目前,所有声音都会立即发射。

如何尽可能准确地运行&#39;功能?每分钟节拍?

1 个答案:

答案 0 :(得分:1)

setTimeout()函数是非阻塞函数,将立即返回。

var song = ['A', 'A', 'A'];
var n = 0;
function makeSound() {
    setTimeout(function(){
        theFunction(song[n]);
        n++;
        if (n < song.length)
            makeSound();
    }, beatsPerMinute)
}
makeSound();