setTimeout(関数名, ミリ秒) :設定した時間のあとに、1回だけ処理を実行するように予約する命令

※これも関数名に()はつけない!

▼例)

{
    function showTime() {
        console.log(new Date());
    }

    setTimeout(showTime, 1000);
}

<aside> 💫 関数名の箇所を、アロー関数にして中に処理を書くのもOKだよ!

</aside>

▼例)クラスのメソッド内でsetTimeout()を使用 ※クラスの場合、スコープの関係で逆にこう書かないと動かないよ!(詳しくは下部に記載)

・
・
・
spin() {
  this.img.src = this.getRandomImage();
  this.timeoutId = setTimeout(() => {
    this.spin();
    }, 50);
}
・
・
・
または
spin() {
  this.img.src = this.getRandomImage();
  this.timeoutId = setTimeout(this.spin**.bind(this)**, 50); //.bind():スコープの範囲を()に指定したものに束縛できる
}

setTimeout()で繰り返し処理

処理を実行したい関数の中にsetTimeout() も入れ、関数を呼び出すと繰り返し処理になる。

▼例)

{
    function showTime() {
        console.log(new Date());
        **setTimeout(showTime, 1000);**
    }

    showTime();

}

やめたい場合はclearTimeout() を使う。

▼例)3回表示したら処理を止める

{
    let i = 0;

    function showTime() {
        console.log(new Date());
        const timeoutId = setTimeout(showTime, 1000); //clearTimeout()に渡せるように、定数に代入する

        i++;

        if (i > 2) {
            **clearTimeout(timeoutId);**
        }
    }

    showTime();

}

▼なぜクラスのメソッド内では、アロー関数の中に記載しないといけないのか

スクリーンショット 2022-01-26 16.10.28.png

スクリーンショット 2022-01-26 16.10.35.png