Javascript 如何读取已设置的超时句柄上剩余的时间?

Javascript 如何读取已设置的超时句柄上剩余的时间?,javascript,timeout,Javascript,Timeout,alert(timeoutHandle)返回一些奇怪的数字,比如1或2,调用函数时应该是900和倒计时到0?所以我想我做错了。你不能。设置超时后,您所能做的就是用clearTimeout取消它。setTimeout返回的数字只是一个句柄,它用于通过clearTimeout取消。您可以使用Date.getTime()以毫秒为单位获取Date对象的表示,因此(相当准确的)近似值为: timeoutHandle = setTimeout(function() { //code },1000);

alert(timeoutHandle)
返回一些奇怪的数字,比如1或2,调用函数时应该是
900
和倒计时到
0
?所以我想我做错了。

你不能。设置超时后,您所能做的就是用
clearTimeout
取消它。
setTimeout
返回的数字只是一个句柄,它用于通过
clearTimeout

取消。您可以使用
Date.getTime()
以毫秒为单位获取
Date
对象的表示,因此(相当准确的)近似值为:

timeoutHandle = setTimeout(function() {
  //code
},1000);
timeoutHandle=setTimeout(函数(){
//代码
}, 1000);
timeoutStart=newdate().getTime();
...
var elapsedTime=new Date().getTime()-timeoutStart
setTimeout
setInterval
的返回值只是一种“计时器ID”-您使用它来使用
cleartimout
cleartiment
停止计时器,它不会动态更改


编辑:正如@Rocket指出的,是的,你可以使用
Date.now()
而不是
new Date().getTime()

你可以使用
Date.now()
而不是
new Date().getTime()
。@Rocket:谢谢,我不知道。
Date.now()
直到IE9才在IE中可用。是的,IE很糟糕。你根本不需要在任何主要浏览器中使用
getTime()
,因为
Date
对象的
valueOf()
方法返回与
getTime()
相同的值,这意味着从一个日期减去另一个日期可以得到你想要的。例如:
var start=new Date();/*东西…*/var appead=新日期()-开始
timeoutHandle = setTimeout(function() {
  // code
}, 1000);
timeoutStart = new Date().getTime();

...

var elapsedTime = new Date().getTime() - timeoutStart;