0
下面的代码以递归方式播放音频元素并跟踪对文本的迭代,这两者都通过清除其超时的按钮停止。SetTimeout递归(Javascript)
如果将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");
}
啊哈!因此,由于没有实际的ID值来清除超时时间,所以即将发生的音频超时按计划发生,即使相应的递归被破坏,因此不再被调用。 –