我有一个事件,我每5秒触发一次以检查文件是否已完成处理。
我正在做以下事情:
if (InSuppArray(item.Id) == false && item.Status() == "Queue") {
var t = setTimeout(function () { checkQueuedSupp(item.OrderId) }, 5000);
suppIds.push({ Id: item.OrderId, TimerId: t });
}
基本上,可以上传多个文件,因此这会创建一个计时器阵列,并在文件完成时将其杀死。
这在Firefox和Chrome中运行良好,但计时器仅在Internet Explorer中触发一次。
有更好的方法吗?我在周围搜索并发现了IE和setTimeout
的一些问题,但大多数都暗示它在IE中从不起作用,至少可以触发一次。
答案 0 :(得分:0)
setTimeout是延迟执行函数,而不是重复执行它。你想要的是setInterval,它将为你指定的每个时间间隔执行你的函数。
答案 1 :(得分:0)
1)是否正在进行第一次迭代?是的,你的代码工作正常。
2)如果您的问题是重复的,请检查以下内容:
setTimeout
不是重复的方法。而是使用 setInterval
。
if (InSuppArray(item.Id) == false && item.Status() == "Queue") {
var t = setInterval(function () { checkQueuedSupp(item.OrderId) }, 5000);
suppIds.push({ Id: item.OrderId, TimerId: t });
}
要使 setTimeout
重复,请尝试将其设为 recursive
。