Все, что я имею в виду в Интернете, указывает на то, что Javascript является однопоточным (кроме веб-работников, которые работают в другом глобальном контексте и не могут напрямую влиять на состояние в основном потоке).Однако, отлаживая некоторый код, я заметил, что даже когда я останавливался на такой-то строке, переменные продолжали изменяться, даже когда я не перешагивал строки кода.Следуя дальнейшему расследованию, я заметил, что, опять же, даже в режиме паузы в отладчике (и я ничего не трогал), журналы регистрировались и ошибки генерировались каждую секунду в соответствии с установленным таймаутом.
IЯ использую ОС: Windows 10 Enterprise, версия 1803, сборка ОС 17134.407.Я столкнулся с проблемой в Firefox 63.0.1 (64-разрядная версия).Однако когда я попробовал его в Chrome 70.0.3538.102 (Официальная сборка) (64-разрядная версия), проблема не возникла - пауза в отладчике, как и ожидалось, приостановила все вычисления.
Не могупредоставьте любой полезный код, потому что: 1. это код компании, и 2. это проблема стиля многопоточности, из-за которой очень трудно сузить область доступа к какой-либо части кода.Вещи, которые могут иметь отношение к делу, помимо вышеупомянутых различий в браузере: это приложение AngularJS, предоставляемое браузеру из NodeJS.Мы используем соединения $interval()
, timeout()
, $http
и Stomp.
Насколько я понимаю, такое многопоточное поведение должно быть невозможным.Как это могло произойти?