我正在尝试创建一个10秒到60秒,间隔为半秒的随机计时器。但是即使我认为它应该可以工作,我的代码也无法工作,因此我需要其他人告诉我哪里出了问题。
function timer(t) {
while (t >= 0) {
setTimeout(function() {
t--;
}, 500);
}
alert("Time OUT!");
console.log(t);
return;
};
$("playbutton").click(function() {
var randomTime = Math.round(Math.random() * 100 + 20);
timer(randomTime);
alert(randomTime);
});
答案 0 :(得分:2)
问题是您实际上并没有改变自己的想法。确实,您是异步设置“虚拟无限”超时(因为它会尽可能快地循环),因此它们不会按您的意图每500毫秒阻塞一次执行。
我在选择器中添加了id#,因为这是我可以对其进行测试的方法。 如果您想这样做,则每次迭代将从初始时间减少1:
function timer(t) {
let mytime = setInterval(function() {
t--;
if(t<=0){
alert("Time OUT!");
clearInterval(mytime);
}
}, 500);
};
$("#playbutton").click(function() {
var randomTime = Math.round(Math.random() * 100 + 20);
timer(randomTime);
alert(randomTime);
});
异步功能是您通常从js学习开始的一步变化,但是理解它们很重要