我正在寻找JavaScript代码到强行 1 超时操作。
fwiw,在其他编程环境中,我要寻找的是通过在启动操作之前在计时器上设置异步中断信号并捕获中断信号来实现的(最后一个点是键,因为它确定控制位置中断后将转移)。在伪代码中,它看起来像:
alarm = set_alarm(timeout)
try
operation()
catch timeout
return
end
clear(alarm)
JavaScript中是否有类似的东西?如果没有,还有其他方法可以实现这种强制性中断吗?
1 by"强行"我的意思是,这些方法不取决于定时代码的合作。此类合作可以采用内置超时参数的形式,或一个全局变量,其设置为定期检查,以确定是否继续进行,等等。
而无需进入Webworkers
之类的东西,您唯一可以做的就是让您的operation
函数跟踪它已经运行了多长时间,并且如果它持续了很长时间。
当然,这可能会使事情处于不一致的状态。
如果您要处理某些东西,并且花费太长,则可以一次使用setTimeout
在小块中进行操作。
如果您真的很幸运能够仅针对最新和最伟大的浏览器而忽略IE,那么Generator Functions
可能是神奇的 - 但是我们当中很少有人很幸运。