Если вы не хотите вставлять код для явного выхода, попробуйте использовать условную точку останова. Если вы откроете консоль сценария Firebug и щелкнете правой кнопкой мыши в канавке рядом с кодом, она вставит точку останова и предложит вам вариант ее запуска, удовлетворяющий некоторому условию. Например, если ваш код был таким:
var intMaxIterations = 10000;
var go = function() {
while(intMaxInterations > 0) {
/*DO SOMETHING*/
intMaxIterations--;
}
};
... вы можете либо дождаться завершения всех 10 000 итераций цикла, либо вы можете поместить условную точку останова где-нибудь внутри цикла и указать условие intMaxIterations < 9000
. Это позволит коду внутри цикла запускаться 1000 раз (ну, фактически, 1001 раз). В этот момент, если вы хотите, вы можете обновить страницу.
Но как только сценарий входит в бесконечный цикл (либо по ошибке, либо по замыслу), вы не можете сделать, как я знаю, многое, чтобы остановить его, если вы не подготовились к этому. Именно поэтому, когда я делаю что-то сильно рекурсивное, я устанавливаю ограничение на количество попыток выполнения определенного блока кода. Есть много способов сделать это. Если вы считаете поведение действительной ошибкой, подумайте об этом. Э.Г.
var intMaxIterations = 10000;
var go = function() {
while(true) {
/*DO SOMETHING*/
intMaxIterations--;
if (intMaxIterations < 0) {
throw "Too many iterations. Halting";
}
}
};
Edit:
Мне просто пришло в голову, что, поскольку вы являетесь единственным человеком, использующим этот сценарий, веб-работники являются идеальным решением.
Основная проблема, с которой вы сталкиваетесь, заключается в том, что, когда JS входит в бесконечный цикл, он блокирует браузер, оставляя его безразличным к любым событиям, которые вы обычно используете для остановки выполнения. Веб-работники по-прежнему работают так же быстро, но они не загружают ваш браузер и события запускаются нормально. Идея состоит в том, чтобы вы выдавали свои задачи с высокими требованиями (в данном случае - алгоритм проблем Эйлера) в файл JS веб-рабочего, который выполняется в своем собственном потоке и потребляет ресурсы ЦП только тогда, когда они не нужны главному браузеру. В результате ваш процессор продолжает работать, как сейчас, но ваш браузер работает быстро и быстро.
В первый раз, когда вы настраиваете веб-работника, это немного вредно, но в этом случае вам придется сделать это только один раз. Если ваш алгоритм никогда не возвращается, просто нажмите кнопку и убейте рабочий поток. См. Использование веб-работников на MDC для получения дополнительной информации.