Можно ли остановить выполнение скрипта? [дубликат]
этот вопрос уже есть ответ здесь:
как завершить скрипт в Javascript
11 ответов
можно ли каким-то образом остановить или прекратить JavaScript таким образом, что он предотвращает дальнейшее выполнение на основе JavaScript, не перезагружая браузер?
Я думая о эквиваленте JavaScript exit() в PHP.
11 ответов:
короткий ответ:
throw new Error("Something went badly wrong!");если вы хотите узнать больше, продолжайте читать.
вы хотите остановить выполнение JavaScript для разработки / отладки?
выражение
debugger;в вашем коде остановится выполнение страницы, а затем инструменты разработчика Вашего браузера позволят вам просмотреть состояние вашей страницы на момент ее замораживания.вы хотите, чтобы остановить ваше заявление безосновательно и дизайн?
по ошибки?
вместо того, чтобы пытаться остановить все, пусть ваш код обрабатывает ошибку. Читайте о
Exceptions с помощью Google. Это умный способ позволить вашему коду "перейти" к процедурам обработки ошибок без использования утомительных блоков if/else.прочитав о них, если вы считаете, что прерывание всего кода является абсолютно единственным вариантом, бросая исключение, которое не будет "поймано" нигде, кроме как в "корне" вашего приложения" область действия-это решение:
// creates a new exception type: function FatalError(){ Error.apply(this, arguments); this.name = "FatalError"; } FatalError.prototype = Object.create(Error.prototype); // and then, use this to trigger the error: throw new FatalError("Something went badly wrong!");убедитесь, что у вас нет
catch()блоки, которые ловят любой исключение; в этом случае измените их, чтобы перестроить ваш"FatalError"исключение:catch(exc){ if(exc instanceof FatalError) throw exc; else /* current code here */ }когда задача завершается или происходит произвольное событие?
return;прекращается поток выполнения текущей функции.if(someEventHappened) return; // Will prevent subsequent code from being executed alert("This alert will never be shown.");Примечание:
return;работает только в пределах функции.в обоих случаи...
...вы также можете узнать, как остановить асинхронный код. Это делается с
clearTimeoutиclearInterval. Наконец, чтобы остановить XHR (Ajax) запросы, вы можете использоватьxhrObj.abort()метод (который находится в jQuery а также).
вы можете сделать опечатку JavaScript :D (мышление вне коробки здесь)
thisFunctionDoesNotExistAndWasCreatedWithTheOnlyPurposeOfStopJavascriptExecutionOfAllTypesIncludingCatchAndAnyArbitraryWeirdScenario();или что-то вроде:
new new
что то вроде этого должно работать:
function javascript_abort() { throw new Error('This is not an error. This is just to abort javascript'); }Взято отсюда:
нет.
даже если вы создадите исключение, оно убьет только текущий цикл событий. Обратные вызовы, переданные обработчикам событий setTimeout или DOM/XMLHttpRequest, будут по-прежнему выполняться, когда придет их время.
Я:
setTimeout(function() { debugger; }, 5000)таким образом у меня есть 5 секунд, чтобы взаимодействовать с UI, а затем прекращается. Las время, которое я использовал, было тогда, когда мне нужно было оставить пользовательскую подсказку видимой, чтобы сделать некоторые изменения стиля.
Если вы находитесь в функции, вы можете выйти из нее с помощью
return;но это не останавливает выполнение родительской функции, которая вызвала эту функцию.
можно назвать
returnв самом начале функции, и, по крайней мере, эта функция перестанет работать. Вы также можете просто использоватьthrow ''чтобы вызвать ошибку и останавливает текущий процесс. Но это не остановит все.setTimeoutиsetIntervalможно сделать задержанные функции и функции, которые выполняются на временном интервале, соответственно. Они будут продолжать работать. События Javascript также будут продолжать работать в обычном режиме.
процесс утомительный, но в Firefox:
- откройте пустую вкладку / Окно, чтобы создать новую среду для скрипта с текущей страницы
- Заполните эту новую среду скриптом для выполнения
- активировать скрипт в новой среде
- закрыть (то есть убить) эту новую среду ...
остановить или прекратить JavaScript это [в] способ [что он] предотвратить[s] дальше Выполнение на основе JavaScript из происходящего, без перезагрузки браузера
Примечания:
- Шаг 4 останавливает только выполнение JavaScript в этой среде, а не Скрипты любых других окон
- исходная страница не перезагружается, но новая вкладка/окно загружается со скриптом
- когда вкладка/окно закрыта, все в этой среде исчезло: все остатки, частичные результаты, код и т. д.
- результаты необходимо перенести вернуться к родительскому или другому окну для сохранения
- для повторного запуска кода необходимо повторить описанные выше шаги
другие браузеры имеют и используют различные соглашения.
определите переменную внутри функции JavaScript, установите эту переменную в 1, Если вы хотите выполнить функцию, и установите ее в 0, если вы хотите остановить ее
var execute; function do_something() { if (execute == 1) { // execute your function } else { // do nothing } }
Я знаю, что это старый, но я хотел сделать это и я нашел, на мой взгляд, немного улучшил решение бросить ответы. Просто временно подавите сообщения об ошибках и повторно активируйте их позже с помощью setTimeout:
setTimeout(function() { window.onerror = function(message, url, lineNumber) { return false; }; }, 50); // sets a slight delay and then restores normal error reporting window.onerror = function(message, url, lineNumber) { return true; }; throw new Error('controlledError');
Comments