2

set timeout を呼び出すと、たとえば数値が返されます

> setTimeout(function(){ console.log('done'); },1000);
4431
"done"

この番号を使用して通話できることはわかっていますclearTimeout()が、この番号は内部的に何を表しているのですか?

4

4 に答える 4

6

それが何を表しているかは問題ではありません。これは、メモリ内のアドレス、配列へのインデックス、またはインタプリタ + オフセットを作成したプログラマの National ID # である可能性があります。

あなたは気にしません。気にしないほうがいい。ある特定のブラウザー/JS 環境の内部で今日対応しているものは何でも、明日は別の場所で別のことを意味する可能性があります。

知っておく必要があるのは、この番号がタイマーに対応していることだけです。後でタイマーに何かをする必要がある場合は、その番号が必要になるので、安全に保管してください。タイマーが切れたら捨てて、二度と考えないようにしましょう。


少し細かい詳細に興味がある場合は、アクティブなタイムアウトのリストの仕様を参照してください。数値 (ハンドル) が内部的に何かを表している必要はありません。特定のタイマーを確実に識別するために使用できるというだけの要件があります。

細かいところに興味がある場合は、お気に入りのブラウザのソースをダウンロードして、町に行ってください...

于 2011-06-22T15:30:10.173 に答える
1

使用するJSエンジン、つまり使用するブラウザに依存すると思います。以前の質問から、返された ID を列挙する方法はブラウザごとに異なることがわかっています。

于 2011-06-22T15:33:36.820 に答える
0

イベントを追跡する方法を表す ID です。

于 2011-06-22T15:30:42.820 に答える
-1

これを行う通常の方法は、myTO = setTimeout(...) などの setTimeout ステートメントに等しい変数を設定してから、clearTimeout(myTO) でクリアすることだと思います。

于 2011-06-22T15:31:00.690 に答える