在Internet Explorer中第一次迭代后,setTimeout不会触发

时间:2013-08-30 04:37:40

标签: javascript internet-explorer

我有一个事件,我每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中从不起作用,至少可以触发一次。

2 个答案:

答案 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