所以,让我们说我有一个像这样的数组和一个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;功能?每分钟节拍?
答案 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();