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");
}
Aha!したがって、タイムアウトをクリアするための実際のID値はないので、今後のオーディオタイムアウトは、対応する再帰が壊れてもそれ以上コールされなくても、スケジュールどおりに発生します。 –