Веб Воркеры - зачем они нужны и как их использовать?
К примеру, у нас есть тяжелая синхронная функция, которая исполняется несколько секунд. На всё это время интерфейс в браузере замораживается до тех пор, пока эта функция не выполнится и браузер, наконец, не сможет делать перерендеры. Такую функцию можно разбить на маленькие части, что бы каждая часть выполнялась быстрее 16 мс - что бы сохранить 60 фпс в браузере.
Но если возможность изменить функцию отсутствует, и вообще не хочется её разбивать на маленькие части, то с помощью Web Workers можно исполнить эту функцию в фоне в другом потоке, полностью асинхронно.
Код на GitHub
https://github.com/chebotaevroman/js_webworkers