MDN определяет работников как:

Интерфейс Worker API Web Workers представляет собой фоновую задачу, которую можно легко создать и которая может отправлять сообщения своему создателю.

Что это на самом деле означает? Ну, JavaScript работает в одном потоке, а модель параллелизма реализована с использованием обратных вызовов, которые помещаются в очередь событий.

Рабочие процессы нарушают этот шаблон, позволяя разработчикам создавать новые дочерние задачи, которые могут взаимодействовать с основным потоком посредством обмена сообщениями. Типы действий, которые могут выполнять рабочие, варьируются от выполнения вызовов Ajax до перехвата HTTP-запросов и доставки содержимого из кэша.

Теперь, когда это не так, давайте посмотрим, какие типы рабочих существуют:

  1. Общий работник
  2. Веб-воркер
  3. Сервисный работник

В центре внимания статьи сервисные работники.

Как использовать ПО

Это довольно легко, правда. Все, что нам нужно сделать, это зарегистрировать сервис-воркера в одном из наших *.js файлов, которые загружаются из hmtl.

С этого момента service-worker.js работает в собственной изолированной среде без доступа к DOM.

ПРИМЕЧАНИЕ. мы можем передать второй аргумент функции register, чтобы определить область применения SW. В этом случае ПО сможет обрабатывать все запросы, поступающие от файлов, которые относительно расположены на том же уровне, что и файл ПО (включая вложенные папки, если они есть). Например.

Как я упоминал ранее, рабочие могут общаться с вызывающей стороной только через messages API.

Все, что нам осталось сделать, это применить ту же технику внутри нашего ПО.

Выводы

Рабочие — это столь необходимый свежий воздух в мире JavaScript. Они обеспечивают долгожданное изменение темпа по сравнению с ванильным JS.

В этой статье я рассмотрел базовые применения Service Workers, однако на этом веселье не заканчивается. Предстоит еще многое рассказать:

В моем будущем посте в блоге я буду исследовать все вышеперечисленное, используя технологию Google под названием Workbox.

Нашли ошибку? Дайте мне знать в комментариях!

Первоначально опубликовано на gist.github.com.