我正在为游戏编写浏览器内代码编辑器。编辑器将允许用户编写自己的 JavaScript 文件,然后将其加载到运行编辑器的同一个 DOM 中。这将允许他们在代码旁边的 Canvas 元素中查看游戏,并在每次保存时更新它。
编辑器针对的是 JavaSript 新手,很容易意外陷入死循环。如果可能的话,我想设置我的编辑器,这样如果循环执行太多次或太快,循环就会中断,并且会弹出一条消息,提醒用户他们有一个无限循环。
这对于新手来说是理想的,因为如果整个编辑器突然崩溃,他们可能没有意识到自己的错误是什么,并认为这是我的编辑器的问题。
如何在我的编辑器中实现自动停止无限循环的故障保护?
最佳答案
处理用户提交的代码中潜在的无限循环的最佳方法是预编译代码以在代码中插入监控功能。这被称为 仪表 , 是 explained in detail by Codepen .
例如,来自用户的以下代码...:
for (var i = 0;; i++) {
console.log("hello for loop.");
}
console.log("We'll never reach this line of code");
...将像这样被检测:
for (var i = 0;; i++) {
if (window.CP.shouldStopExecution(1)) {
break;
}
console.log('hello for loop.');
}
console.log('finished because we broke out of the loop');
关于javascript - 如何检测和停止用户提供的 JavaScript 代码中的无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43948315/