【发布时间】:2023-04-06 09:09:01
【问题描述】:
我正在处理 jQuery 中的一些超时问题,但我的超时值有问题。 所以,我得到了一个值数组(例如:[“2490”,“4200”]),我希望我的超时时间在 2490 毫秒后打印数组的值,然后返回 0 并最终打印下一个值4200 毫秒后的数组。但它永远不会回到 0
其实这是 jQuery 代码:
var array = ['2490', '4200'];
var mytimeout;
for (var i = 0; i < array.length; ++i)
{
doTimeout(i);
clearTimeout(mytimeout);
}
function doTimeout(i) {
mytimeout = setTimeout(function() {
$('#text').append(array[i]);
}, array[i]);
}
JSFIDDLE:https://jsfiddle.net/2aftscou/
所以一切似乎都可以正常工作,除了我希望我的计时器在它结束时在 0 处重新初始化(这就是我使用 clearTimeout() 的原因,但它在此不起作用案例)。
我真的不知道该怎么办
【问题讨论】:
-
timer被清除,回调将不会被调用.. -
这是期望的行为吗? jsfiddle.net/Lbjfafpz
-
是的,谢谢老兄。
-
注意:我认为
setTimeout()在任何情况下都只执行一次,clearTimeout()只有在你想在它发生之前取消一次超时时才需要。setInterval()正在重复。 -
@ebyrob 你说得对,谢谢指正
标签: javascript jquery arrays settimeout