....
// setup a timeout to go to the next question based on user-supplied time
var t = questionTime * 1000
test.currentTimeout = setTimeout( showNextQuestion(questions[i+1]), t );
我想在屏幕上放置一个进度条,向
questionTime * 1000
填充,通过询问由setTimeout
创建的计时器。唯一的问题是,似乎没有办法做到这一点。有我错过了的getTimeout
函数吗?我能找到的关于Javascript超时的唯一信息只与通过setTimeout(function,time)
创建和通过clearTimeout(id)
删除有关。我正在寻找一个函数,它返回超时触发前剩余的时间或超时调用后经过的时间。我的进度条代码如下:
var timeleft = getTimeout( test.currentTimeout ); // I don't know how to do this
var $bar = $('.control .bar');
while ( timeleft > 1 ) {
$bar.width(timeleft / test.defaultQuestionTime * 1000);
}
简述:如何找到javascript setTimeout()执行前的剩余时间?
这里是我现在正在使用的解决方案。我查看了负责测试的库部分,对代码进行了重新编排(这很糟糕,并且违反了我的权限)。
// setup a timeout to go to the next question based on user-supplied time
var t = questionTime * 1000
test.currentTimeout = mySetTimeout( showNextQuestion(questions[i+1]), t );
以下是我的代码:
// setTimeout的包装函数 function mySetTimeout( func, timeout ) { timeouts[ n = setTimeout( func, timeout ) ] = { start: new Date().getTime(), end: new Date().getTime() + timeout t: timeout } return n; }
除了IE 6以外的任何浏览器都可以正常运行,即使在我预计会发生异步操作的原始iPhone上也是如此。
getTime()
已被删除,_idleStart
已经是时间。 - Tan Nguyen