Javascript в вашем браузере работает в одном потоке. Если у вас запущен какой-то код (рекурсивный или иной), который время от времени не дает браузеру работать, браузер приостанавливает выполнение сценария и спрашивает пользователя, хотят ли они остановить код или продолжить. Если этого не произойдет, у пользователя не будет возможности восстановить контроль (если вам нравится, что ваш долгосрочный код выполняется в том же потоке, что и пользовательский интерфейс, то есть веб-страница). Вот почему вызовы ajax структурированы таким образом, что ваш код не ожидает (то есть блокирует) результат, но вместо этого вызывается функция обратного вызова с результатами.
Итак, как вы получаете длительный кусок кода? Несколько способов (например, ajax), но самым популярным является использование метода setTimeout. К сожалению, не так просто объяснить, как его использовать, не зная точно, что вы делаете. Любые маленькие примеры, которые я мог бы привести, были бы искусственными.
Таким образом, строгим ответом на ваш вопрос является «переписать код в чанки выполнения, такие как
если нет ни одного фрагмента, выполнение которого занимает много времени ".