如何限制javascript中函数的执行时间
How to limit the execution time of a function in javascript?
情况是:
用户写了一些js代码,它应该在一些数据(本地)上运行。
但有时有无尽的循环或递归调用…这就是为什么我需要限制函数的执行时间,而不是编辑函数本身(即使是这样-我应该在每个序列点后插入检查吗?但是递归调用呢?)
对于这个奇怪的问题还有其他的解决办法吗?也许eval可以给出一些代码的解析树之类的?一个可能的解决方案是使用Web Workers。web worker在一个单独的线程中启动,并且可以被终止。
var worker = new Worker('my_task.js');
...
worker.terminate();
缺点是不是所有的浏览器都支持Web Workers。
这是在浏览器中还是在节点中?
在浏览器中,你可以把你的代码放在一个0秒的setTimeout
中,以释放运行循环(并暂时解除浏览器阻塞)
setTimeout(function() {
// your code here
}, 0)
节点有一些更漂亮的东西,看起来像这样,并且稍微好一点:
process.nextTick(function() {
// frees up the run loop even faster
});
相关文章:
- HTML表单提交时未执行外部函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 用javascript中的param执行动态函数
- 执行php函数的onclick事件的其他替代方案
- jQuery-在页面加载时执行一个函数
- Ajax没有't执行成功函数
- 我想以异步方式执行常规函数
- 尝试在某个类上执行每个函数
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- 测量JavaScript函数的内存使用情况、执行时间和性能
- 在下载图像后或延迟一段时间后执行jQuery函数
- 如何知道哪个JavaScript函数执行时间最长
- 如何结合两个jQuery函数的代码来减少执行时间?
- 如何在Safari中以微秒精度测量JavaScript函数的执行时间
- 在页面加载一段时间后执行JS函数
- 如何检查执行javascript函数的时间
- 如何在一段时间后执行一个函数
- 是否有一种方法可以看到哪些函数/执行时间最长
- Javascript $.get()函数的执行时间
- 如何限制javascript中函数的执行时间