Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中表示超时?_Javascript_Timing_V8_Internal Representation - Fatal编程技术网

如何在JavaScript中表示超时?

如何在JavaScript中表示超时?,javascript,timing,v8,internal-representation,Javascript,Timing,V8,Internal Representation,例如,当我调用set timeout时,它会返回一个数字 > setTimeout(function(){ console.log('done'); },1000); 4431 "done" 我知道我可以用这个号码来调用clearTimeout(),但是这个号码在内部代表什么呢?它代表什么并不重要。它可以是内存中的地址,也可以是数组的索引,或者是编写解释器+偏移量的程序员的国家ID 你不在乎。你最好不要在意。无论它今天在一个特定的浏览器/JS环境中与之对应的是什么,它很可能意味着明天在其

例如,当我调用set timeout时,它会返回一个数字

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

我知道我可以用这个号码来调用
clearTimeout()
,但是这个号码在内部代表什么呢?

它代表什么并不重要。它可以是内存中的地址,也可以是数组的索引,或者是编写解释器+偏移量的程序员的国家ID

你不在乎。你最好不要在意。无论它今天在一个特定的浏览器/JS环境中与之对应的是什么,它很可能意味着明天在其他地方的其他东西

你只需要知道这个数字与你的计时器对应。如果你以后需要对你的计时器做些什么,你会想要那个数字,所以要保证它的安全。当计时器死机时,扔掉它,再也不要想它了


如果您对一些细微的细节感兴趣,请参阅-不要求数字(句柄)在内部表示任何内容,只要求它可以用于可靠地识别特定计时器


如果您对一些非常棘手的细节感兴趣,请下载源代码并进城…

它是表示跟踪事件方式的id。

我认为通常的方法是设置一个等于setTimeout语句的变量,例如myTO=setTimeout(…),然后使用cleartimout(myTO)清除它.

我认为这取决于使用的JS引擎,因此取决于使用的浏览器。我从以前的问题中了解到,每个浏览器都使用不同的方式枚举返回的ID。

另一种称为“不透明句柄”@Thomas这就是我们在这里的原因…:)我明白你想说什么,但这更多是为了满足我自己的好奇心,而不是解决一个编程问题。@Alnitak你可以再说一遍!:)在这里的2.5个月里,我学到了很多东西。@Greg:我添加了一个参考资料-但我怀疑你没有抓住要点。这个数字不必在内部表示它所表示的外部以外的任何东西。这并不能回答这个问题:“这个数字在内部表示什么?”另一个奇怪之处是:在某些浏览器(至少是Chrome浏览器)上,您可以用“clearTimeout()”清除间隔计时器(“setInterval()”)。