Я ищу реальный сценарий использования API Web Workers .
Я ищу реальный сценарий использования API Web Workers .
Ответы:
У Джона Резига (известной из jQuery) есть несколько интересных примеров использования здесь веб-работников - игры, графика, криптография.
Другое использование - веб-ввод-вывод - другими словами, опрос URL в фоновом режиме. Таким образом, вы не блокируете интерфейс в ожидании результатов опроса.
Другое практическое применение: в Bespin они используют Web Workers для подсветки синтаксиса, который не нужно блокировать редактированием кода во время использования приложения.
Из Mozilla : один из способов, с помощью которого работники могут использовать ваш код, - выполнять вычисления с интенсивным использованием процессора, не блокируя поток пользовательского интерфейса.
В качестве практического примера рассмотрим приложение с большой таблицей # (это реальный мир, кстати, взятый из приложения, которое я запрограммировал ~ 2 года назад). Вы можете изменить один # в таблице через поле ввода, и множество других чисел в разных столбцах будет пересчитано в довольно интенсивном процессе.
Старый рабочий процесс был: Изменить #. Идите, принесите кофе, в то время как JavaScript хрустит изменениями других номеров, и веб-страница не отвечает в течение 3 минут - после того, как я оптимизировал его до чертиков и обратно. Вернись с кофе. Изменить второй #. Повторите много раз. Нажмите кнопку Сохранить.
Новый рабочий процесс с рабочими может быть: Изменить #. Получите сообщение о статусе, что что-то пересчитывается, но вы можете изменить другие #. Изменить больше #s. Закончив изменение, подождите, пока статус не изменится на «все расчеты завершены, теперь вы можете просмотреть последние # и сохранить».
Я использовал их для отправки больших объемов данных из браузера на сервер. Очевидно, что вы можете сделать это с обычными вызовами AJAX, но если это требует одного из ценных соединений на имя хоста. Кроме того, если пользователь выполняет переход страницы во время этого процесса (например, щелкает ссылку), ваши объекты JavaScript с предыдущей страницы исчезают, и вы не можете обрабатывать обратные вызовы. Когда используется веб-работник, это действие происходит вне диапазона, поэтому у вас есть лучшая гарантия того, что оно будет выполнено.
Другой вариант использования:
Сжатие / распаковка файлов в фоновом режиме, если у вас много изображений и других мультимедийных файлов, которыми обмениваются с сервера в сжатом формате.
<canvas>
), вы можете получить данные изображения в сжатом формате (например, png). Моя точка зрения заключалась не в том, что в JS никогда не подходит сжатие; моя точка зрения заключалась в том, что в большинстве случаев это не так , а в большинстве случаев - особенно при работе с изображениями, о чем говорит этот ответ - есть лучшая альтернатива использованию собственного сжатия.