【週刊ドットインストール】 考える力を養うための新クラス『データで学ぶアルゴリズム』を256timesでリリース!
レッスンでは、constTimeoutId = setTimeout(showTime,1000);というように定数に入れてから clearTimeout(TimeoutId);というように書いてカウントを止めてたと思うのですが 試しclearTimeout(setTimeout(showTime,1000);というように書いてみました。
するとカウントが増えてもconsole.log(new Date)は止まらなかったです
止まらなかった原因はclearTimeout(setTimeout(showTimeout,1000);というところで、clearTimeout命令より、先にsetTimeout(showTimeout,1000);が読み込まれて、再び関数が実行されたからなのかと思っています。
どうでしょうか?
// 'use strict' let i=0; function showTime(){ console.log(new Date); const TimeoutId = setTimeout(showTime,1000); i++; if(i>3){ // clearTimeout( TimeoutId);ここはコメントアウトしてみました clearTimeout(setTimeout(showTime,1000)); } } showTime();
ドットインストールは、3分動画でマスターできるプログラミング学習サービスです。
3分で気軽に学習でき、スマートフォンからも視聴可能です。ホームページやWebサービスの制作を通して、実践的にプログラミングを学べます。
他にも、ゲーム制作やデータ分析・機械学習・AIに使われる言語まで幅広くカバー。学びたい分野のレッスンがきっと見つかります。
この回答を見るにはプレミアムプランへの登録が必要です
レッスンでは、constTimeoutId = setTimeout(showTime,1000);というように定数に入れてから
clearTimeout(TimeoutId);というように書いてカウントを止めてたと思うのですが
試しclearTimeout(setTimeout(showTime,1000);というように書いてみました。
するとカウントが増えてもconsole.log(new Date)は止まらなかったです
止まらなかった原因はclearTimeout(setTimeout(showTimeout,1000);というところで、clearTimeout命令より、先にsetTimeout(showTimeout,1000);が読み込まれて、再び関数が実行されたからなのかと思っています。
どうでしょうか?