Задать вопрос
@nonamemovich

Использование web workers?

Кому удавалось универсально реализовать работу с web Workers?
Есть ли возможность описать логику работы в main потоке и выполнять её в фоновом? Т.е. в main потоке определяем func1, каким-то образом func1 передаём в фоновый поток и вызываем func1(). Хочется грамотно описать работу с Workers, а не пилить каждый раз конкретную реализацию под различные задачи.
  • Вопрос задан
  • 291 просмотр
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Объекты в web worker передаются через сериализацию "structured clone algorithm" и есть ограничения. Нельзя передать функцию и, соотв., логику.

С другой стороны, можно создавать worker динамически, из data-url, как это описано тут:
<script type="text/js-worker">
  var myVar = 'Hello World!';
  // остальной код web-worker'а
</script>
<!-- ... -->
<script type="text/javascript">
  var blob = new Blob(Array.prototype.map.call(document.querySelectorAll('script[type=\'text\/js-worker\']'), function (oScript) { return oScript.textContent; }),{type: 'text/javascript'});

  // Creating a new document.worker property containing all our "text/js-worker" scripts.
  document.worker = new Worker(window.URL.createObjectURL(blob));

Полный код примера см. по ссылке выше.

Т.е. можно хоть в JS на странице сгенерировать код для worker'а и запустить рабочего.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 дек. 2024, в 22:02
30000 руб./за проект
23 дек. 2024, в 22:01
350000 руб./за проект
23 дек. 2024, в 21:32
20000 руб./за проект