下面的代码递归地播放音频元素并跟踪迭代到文本,这两个文件都通过一个清除超时的按钮停止。
如果将playTimeout分配给外部函数nextThing
,则单击停止按钮时,文本迭代停止后音频将再次播放。但是在评论(内部)版本的playTimeout中,音频会立即停止。
问题:a)为什么会发生这种情况?和b)我怎样才能正确地表达这一点,以便迭代和音频一起移动?
function nextThing(millis,pitch){
setTimeout(playTone,millis,pitch);
};
function timedCount(millis){
document.getElementById('txt').value=iteration;
playTimeout=nextThing(millis,"C3");
// playTimeout=setTimeout(playTone,millis,"C3")
doRecursion=setTimeout(function(){timedCount(millis)},millis);
iteration++;
console.log("made it");
}
答案 0 :(得分:2)
您的nextThing
函数未返回任何内容,系统会忽略计时器ID,并将undefined
分配给playTimeout
。
function nextThing(millis, pitch) {
return setTimeout(playTone, millis, pitch);
// ^^^^^^
}