【发布时间】:2015-05-29 06:20:42
【问题描述】:
我正在尝试获取 timbre.js 录音功能来创建多个缓冲区并将它们存储在一个对象中。创建录音并将其存储在“歌曲”对象中的函数在这里:
var generateSong = function(songtitle){
T.rec(function(output) {
//... composition here, full at: http://mohayonao.github.io/timbre.js/RecordingMode.html
output.send(synth);
}).then(function(buffer) {
var songobject = {}
var song = T("buffer", {buffer:buffer});
songobject['song'] = song;
songobject['buffer'] = buffer.buffer[0];
songobject['samplerate'] = buffer.samplerate;
songs[songtitle] = songobject;
console.log('test message');
});
};
然后我尝试使用这样的 for 循环多次调用它:
for(var i=0;i<5;i++){
var songtitle = generateSongTitle();
var songobject = generateSong(songtitle);
}
但是,我只将一条测试消息记录到控制台,因此循环似乎运行一次然后停止。我已经尝试将代码的“then()”部分移动到 for 循环本身内部(即 generateSongTitle().then(...) ),但这也有同样的问题。如何让 generateSong() 函数多次运行?
谢谢
【问题讨论】:
-
你的函数实际上没有返回任何东西 - 你能告诉我们 generateSongTitle 吗?
-
您确定
T.rec确实可以并行工作吗?库可能会被编码以防止这种情况发生。
标签: javascript promise audio-recording web-audio-api