1

これは古い質問かもしれません。しかし、いくつかグーグルで調べた後、私は本当に混乱しています。

この質問から、 setTimeout が永久に実行されることを学びました。

しかし、これから、度だけ実行されることがわかりました。

奇妙なことに、ブラウザ コンソールでテストすると、たまたま実行し続けていることがわかりました。

ここに画像の説明を入力

ただし、一度しか実行されない場合もあります。

ここに画像の説明を入力

同じコードでも異なる結果が得られます。理由を知っている人はいますか?

編集: setTimeout が 1 回だけ実行されると信じられるようになりましたが、テストの最初のスクリーンショットを説明するにはどうすればよいですか?

4

2 に答える 2

4

setTimeoutは1 回だけ実行されます。

リンク先のstackoverflowの質問のコードは、再帰的であるため実行を続けます。setTimeout 呼び出しは、それ自体を呼び出します。

于 2013-05-02T03:03:02.363 に答える
1

setTimeoutリンクされた質問に示されているように、永遠に実行されるわけではありませが、渡す関数で再度呼び出すことでエミュレートできますsetIntervalsetTimeoutsetTimeout

This answersetTimeout /からの戻り値はsetInterval、後でタイマーを参照してタイムアウトをキャンセルするために使用できるものであることを説明しています。

于 2013-05-02T03:03:41.643 に答える