2016-08-20 4 views
8

Я работаю над панелью, где пользователи могут создавать свои собственные визуализации (с помощью plotly.js). Иногда сложность этих визуализаций приводит к длительному времени рендеринга, что приводит к замораживанию пользовательского интерфейса браузера.Render plotly.js график без зависания GUI (рабочий стол?)

Я уже создал веб-работников для других задач на панели инструментов. Может быть, есть способ визуализации графиков plotly.js в веб-работнике и вернуть их в основной поток?

Я знаю, что в веб-работниках нет возможности DOM/Canvas. Но, может быть, есть трюк или вы знаете лучший способ предотвратить замораживание GUI? Возможно, аутсорсинг рендеринга на сервер с phantomjs (я никогда не использовал его, поэтому просто предположить, что он может работать с pjs).

+0

Я зарегистрировал проблему для этого: https://github.com/plotly/plotly.js/issues/1499 – silverwind

ответ

1

Возможным решением для вашей проблемы может быть OffscreenCanvas API: https://developer.mozilla.org/de/docs/Web/API/OffscreenCanvas

Вы можете получить доступ к этому API от работника и, возможно, использовать его непосредственно с библиотекой вы упомянули.

Но поскольку поддержка браузера очень плохая и (по крайней мере, в Firefox, я не знаю, как это происходит в настоящее время с другими браузерами, https://bugzilla.mozilla.org/show_bug.cgi?id=801176) Контекст 2d canvas не поддерживается (но если вы используете библиотеку, которая использует WebGL, не будет проблемой).

В качестве альтернативы можно использовать чистый яваскрипта polyfill (это повторное внедрение) холста, который работает в WebWorkers: https://www.npmjs.com/package/canvas-webworker Стоит отметить, что этот способ не аппаратное ускорение не appliable.

В сочетании может быть создано хорошее решение.

+1

Здравствуйте, спасибо за ваш ответ. Я считаю, что новый API очень интересен. Жаль, что это так экспериментально. Мне также очень нравится другое решение. Жаль, что я больше не работаю над проектом, который нуждается в решении. Я считаю честным отметить ваш ответ как лучший ответ. Идеи понятны и перспективны! – DaTebe

+0

Да, но, может быть, ответ может быть полезен кому-то еще в будущем! Хорошая поддержка API-интерфейса OffscreenCanvas - это победа для всей сети. он предлагает так много возможностей. Посмотрим, что принесет будущее. – scriptify