Предыстория
Раньше, когда деревья были большими, во всех браузерах у JavaScript был только один поток вычисления. Иными словами, если мы запускали что-нибудь очень тяжелое, то теряли управление до тех пор, пока все не выполнится. Продвинутые разработчики естественно:
- выносили весь JS-код во внешние файлы,
- учитывали сколько потоков загрузки с домена может быть у браузера одновременно и объединяли несколько файлов в один,
- использовали маленький загрузчик, который в свою очередь по setTimeout уже подгружал оставшиеся 30-40Кб кода (таким образом удавалось раньше отобразить страницу, пусть и с ограниченным функционалом),
- тяжелые операции разбивали на сегменты и выполняли их через интервал времени (setInterval),
- написание offline приложений вообще было отдельным искусством, а уж если приходилось писать приложения для неустойчивых соединений, то это уж совсем шаманство.
Однако суровые времена средневековья проходят. Теперь, в наиболее современных браузерах, появляется поддержка HTML5 и в частности Web Workers. Потоков вычисления может быть несколько.
Обновленные подробности о Web Workers