Javascript JS在一定的时间范围内执行正则表达式

Javascript JS在一定的时间范围内执行正则表达式,javascript,regex,Javascript,Regex,是否可以在特定的时间范围内执行正则表达式?例如,我们执行regexr并等待它完成最长5秒,否则我们取消。这是任何人都有过的经验吗?我现在能想到的唯一方法是使用在单独的线程中运行正则表达式,并在主线程中使用计时器表示“超时”,并使用myTimer.terminate()杀死工作线程语法。然而,这给表带来了一大堆问题,因为工作线程没有对DOM的任何访问权,其行为完全像一个简单的消息总线。在JavaScript中计算正则表达式是一个阻塞操作,因此您没有机会计时并取消其执行。一个可能的解决方案是使用-但

是否可以在特定的时间范围内执行正则表达式?例如,我们执行regexr并等待它完成最长5秒,否则我们取消。这是任何人都有过的经验吗?

我现在能想到的唯一方法是使用在单独的线程中运行正则表达式,并在主线程中使用计时器表示“超时”,并使用myTimer.terminate()杀死工作线程语法。然而,这给表带来了一大堆问题,因为工作线程没有对DOM的任何访问权,其行为完全像一个简单的消息总线。

在JavaScript中计算正则表达式是一个阻塞操作,因此您没有机会计时并取消其执行。一个可能的解决方案是使用-但我没有任何经验。

我不太清楚“执行”是什么意思,但在某些情况下,可以将阻塞操作变成循环:

s = "long thing"
re = /[a-z]/g

// blocks
matches = s.match(re)

// doesn't block
matches = []
while(m = re.exec(s)) {
 matches.push(m[0])
 do your time check here
}

第二个示例如何是非阻塞的?我认为
re.exec
将在一次调用中计算整个
s
字符串,这实际上意味着您的
,而
循环只执行一次。但我可能错了。事实上,废话——我现在明白你的意思了。但是,只有当匹配之间的时间小于5秒时,这肯定会起作用,即
循环中的代码只有在匹配发生时才会执行,
循环中的代码在匹配之间经过的时间超过5秒时,代码才会阻塞,直到找到下一个匹配。这是对的吗?谢谢,这是一个公平的观点——显然,浏览器对Web工作人员的支持是有限的,而您的解决方案使用Javascript的本地语言功能。