【发布时间】:2014-03-18 03:35:44
【问题描述】:
我正在使用 JavaScript 在 Windows 8.1 App 中创建实时编辑器。几乎完成了,但问题是每当我运行如此糟糕的循环或函数时,它就会自动挂起或退出。
我用一个循环来测试它,例如:(它只是一个例子——用户可以用自己的方式编写它的循环..)
for(i=0;i<=50000;i++)
{
for(j=0;j<5000;j++){
$('body').append('hey I am a bug<br>');
}
}
我知道这是任何应用程序或浏览器处理这种循环的最坏情况。所以在这里我希望如果用户使用这样的循环那么我如何处理它来产生他们的输出?
或者,如果无法针对这种循环保护我的应用程序,如果这对我的应用程序有危险,那么我会提醒用户:
运行这个 sn-p 可能会导致应用崩溃!
如果代码有for(i=0;i<=5000;i++) 之类的内容,我有一个想法可以使用正则表达式检查代码,那么上面的警报将显示,如何为此执行正则表达式?
还可以包含 C# 作为后端。
【问题讨论】:
-
这个循环也以阻塞同步方式运行了50000*50000次,你可以查看stackoverflow.com/questions/4288759/…
-
是的,这就是为什么我编写这样的代码来检查我的实时编辑器上的错误,并且想要检测那种类型的循环?他们有什么办法吗?
-
我只是更新问题.. @ArunKillu
-
如果您的用户可以创建自己的 JavaScript,那么您可能需要依靠浏览器的慢速检测来解决这个问题 - 正则表达式对此并不“感觉正确”,因为总会有这样的情况它无法捕捉。 Firefox 有一个缓慢检测器,并为用户提供中止当前脚本的机会。那么,只要您保存了用户的工作,也许就足够了?不过,我不确定其他浏览器提供什么速度检测。
-
有点相关,但不是解决方案:stackoverflow.com/q/15676710/472495
标签: c# javascript regex visual-studio-2012 winjs