Мультизадачность или потоки: возможно такое в браузере?
Есть браузер, в нём выполняется некий процесс, очень и очень трудный, скажем нарезка большого изображения на мелкие куски, в этот момент естественно браузер просто висит в облаках и не отвечает.
Ранее я читал что-то там про потоки, якобы можно операцию в отдельный поток положить и браузер будет фурычить, на словах конечно красиво звучит, а на практике кукишь.
Реально ли такое сделать? Хочу повесить нарезку изображения на отдельный поток и чтобы браузер продолжал нормально работать.
Web Workers предоставляют простое средство для запуска скриптов в фоновом потоке. Поток Worker'а может выполнять задачи без вмешательства в пользовательский интерфейс. К тому же, они могут осуществлять ввод/вывод, используя XMLHttpRequest (хотя атрибуты responseXML и channel всегда будут равны null). Существующий Worker может отсылать сообщения в JavaScript код, который его создал, отправляя сообщения в обработчик событий, указанный этим кодом (и наоборот).
разбейте задачу на небольшие части, например вырезание по одному куску, и запускайте их по очереди через setTimeout(0). браузер будет успевать отвечать и перерисовываться за это время.