動的な数値を必要とするタイムアウト関数を実行している for ループがありますが、場合によっては増分ではなく最終結果を取得しています。
これが私のコードです(psはい、forループ内で「開始」変数を設定することは理想的ではないことに気づきました):
var new_answer_start = 0;
var seconds = 0;
for (start=0; start<50; start++) {
new_answer_start = new_answer_start + 50;
seconds = seconds + 10000; //10 seconds
setTimeout(function(){reloadXMLDoc(xmlurl, new_answer_start);},seconds);
}
私が達成しようとしているのは、関数が 10 秒ごとに増加すると、new_answer_start が 50 の増分で実行されることです。代わりに、関数が 2500 から始まるたびに 10 秒ごとに出力されます (50 後の最後の数字のセット)ループ)。私は以前に同様の問題を抱えていましたが、クロージャーに関係していて、「let」を使用して修正しました。しかし、私が試したとき:
let new_answer_start = new_answer_start + 50;
NaN (not a number) エラーが発生し始めました。タイムアウトが秒単位 (10、20、30 など) で増加するのは奇妙だと思いましたが、関数に送信される変数はそうではありませんでした。これは、関数が 10 秒後に実行されると、変数のインクリメントが最後まで完了したためだと思います。では、「固定」番号を関数に送信するにはどうすればよいですか?
ここで同様の質問について調査した後、番号をクロージャーに入れてみました。
setTimeout(function(){reloadXMLDoc(xmlurl, (new_answer_start));},seconds);
しかし、これはまだ2500で出力を開始します。