2017-08-23 3 views
3

あたりのビートに基づいて音を出すこと、のは、私はそれを反復処理するループのため、このなどの配列を持っているとしましょう:クローム拡張子:配列をループし、だから、分

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); 
} 

私はすでに書かれた機能を持っていますそれらの文字列を受け取り音に変換します。私が直面している問題はタイミングです。現在、すべての音が一度に発射されます。

できるだけ正確に「ファンクション」を実行して1分あたりのビートを得る方法はありますか?

+0

setTimeoutは正確ではありませんか? –

+0

はBeatsPerMinuteが定義されていますか? –

答えて

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(); 
関連する問題