0
我使用代码从这样的回答:https://stackoverflow.com/a/6501353/494901倒计时时间耗尽时不会返回。
基本上当计时器结束时,我希望它返回true,以我的功能,例如,当它已经结束了,我可以做的东西一切都结束了之后。但脚本从不返回,它结束,但它永远不会返回到它所调用的方法。
function countdown(elementName, minutes, seconds)
{
var element, endTime, hours, mins, msLeft, time;
function twoDigits(n)
{
return (n <= 9 ? "0" + n : n);
}
function updateTimer()
{
msLeft = endTime - (+new Date);
if (msLeft < 1000) {
return true;
} else {
time = new Date(msLeft);
hours = time.getUTCHours();
mins = time.getUTCMinutes();
element.innerHTML = (hours ? hours + ':' + twoDigits(mins) : mins) +
':' + twoDigits(time.getUTCSeconds());
setTimeout(updateTimer, time.getUTCMilliseconds() + 500);
}
}
element = document.getElementById(elementName);
endTime = (+new Date) + 1000 * (60*minutes + seconds) + 500;
return updateTimer();
}
究竟是在调用此方法? – trebuchet
它是异步的!你永远无法从未来的计算中返回一个值。您只需设置计时器以便稍后执行某些操作,并立即从'countdown'函数返回 - 更好的名称是“initCountdown” – Bergi