Альтернатива Web worker или как заставить его работать?
Добрый день. Пишу небольшой проект, в котором есть сложные вычисления. В проекте подключено около 10 сторонних библиотек. Если из главного .js файла все работает, то при попытке переноса в Web worker, библиотеки начинают выкидывать ошибки. Я пробовал импортировать скрипты и каждый отдельно, и объединял в один файл - результат один и тот же. Я так понимаю, что проблема в том, что у воркеров нету доступа к некоторым функциям и из-за этого он и не работает (сугубо моя догадка). Вопрос заключается в том, есть ли какой-либо другой вариант асинхронного выполнения сложных вычислений? Или как все-таки обойти ограничения воркера и выполнить вычисления в нем? Спасибо.
OVK2015: а что именно я должен был там найти? Я знаю о том, что у них есть ограничения. Я не уверен, но вероятно из-за них не работают функции из библиотек. Или я что-то пропустил?
Если из главного .js файла все работает, то при попытке переноса в Web worker, библиотеки начинают выкидывать ошибки. Я пробовал импортировать скрипты и каждый отдельно, и объединял в один файл - результат один и тот же.
Из этого трудно понять, что именно не дает Worker`у штатно отработать
OVK2015: весь проект скидывать не буду, ибо там много всего, я не думаю, что у читателей будет желание разбираться. В кратце, ошибки типа replace is not a function, variable is undefined и вот такого типа.
Воркер не дает работать с дом элементами и выполнять синхронные запросы - это собственно основные ограничения. Для вычислений он подходит идеально, просто код вычислений должен находится в самом воркере/воркерах. С основным скриптом он может общаться посредством сообщений. То есть не получится выполнить произвольный код в воркере, но можно выбрать из библиотек только нужные функции и завернуть их в воркер где и выполнить.
Вариант без воркера - делать вычисления поэтапно и вставлять промежутки setTimeout между этапами, чтобы не потерять отзывчивость пользовательского интерфейса.