如何在JavaScript中强行超时?

时间:2014-03-12 13:31:54

标签: javascript timeout interrupt

我正在寻找强制 1 暂停操作的JavaScript代码。

FWIW,在其他编程环境中,我正在寻找的是通过在启动操作之前在定时器上设置异步中断信号并捕获中断信号来实现(这最后一点是关键,因为它确定了在中断后控制将被转移的地方)。在伪代码中,它看起来像:

alarm = set_alarm(timeout)
try
    operation()
catch timeout
    return
end
clear(alarm)

JavaScript中有这样的东西吗?如果没有,还有其他方法可以实现这种强制中断吗?


1 强迫"强迫"我的意思是这些方法不依赖于超时代码的合作。这种合作可以采用内置超时参数的形式,也可以采用全局变量的形式,被调用代码定期检查以确定是否继续等等。

1 个答案:

答案 0 :(得分:1)

如果不进入类似Webworkers之类的东西,你唯一可以做的就是让你的operation函数跟踪它运行了多长时间,如果它已经持续太久就会挽救。

当然,这可能会使事情处于不一致状态。

如果您正在尝试处理某些内容且时间过长,则可以使用setTimeout一次性处理小块内容。

如果你真的很幸运能够只针对最新和最好的浏览器并忽略IE浏览器,那么Generator Functions可能是神奇的 - 但我们很少有人那么幸运。