下面的代码递归地播放音频元素并跟踪文本迭代,这两者都通过清除超时的按钮停止。
如果将 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");
}
最佳答案
您的 nextThing
函数没有返回任何内容,计时器 ID 被忽略,并且会将 undefined
分配给 playTimeout
。
function nextThing(millis, pitch) {
return setTimeout(playTone, millis, pitch);
// ^^^^^^
}
关于javascript - SetTimeout 递归 (Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44609995/