Ich arbeite an einem Dashboard, wo Benutzer ihre eigenen Visualisierungen (mit plotly.js) erstellen können. Manchmal führt die Komplexität dieser Visualisierungen zu einer langen Renderzeit, die zu einem Einfrieren der Browser-Benutzeroberfläche führt.
Ich habe bereits Web-Mitarbeiter für andere Aufgaben in meinem Dashboard erstellt. Vielleicht gibt es eine Möglichkeit Rendern plotly.js Graphen in einem Web-Worker und zurück zum Haupt-Thread?
Ich weiß, dass es in Web-Arbeitern keine DOM / Canvas-Fähigkeit gibt. Aber vielleicht gibt es einen Trick oder Sie kennen einen besseren Weg, um das Einfrieren der GUI zu verhindern? Vielleicht Outsourcing Rendering auf Server mit Phantomjs (ich habe es nie verwendet, so ist es nur eine Vermutung, dass es mit pjs funktionieren könnte).
Eine mögliche Lösung für Ihr Problem könnte die OffscreenCanvas API sein: Ссылка
Sie können auf diese API von einem Worker aus zugreifen und sie möglicherweise auch direkt mit der von Ihnen erwähnten Bibliothek verwenden.
Aber als Browser-Unterstützung ist wirklich schlecht und (zumindest in Firefox, ich weiß nicht, wie es derzeit mit anderen Browsern ist, Ссылка ) 2D-Canvas-Kontext wird nicht unterstützt (aber wenn Sie eine Bibliothek verwenden, die WebGL verwendet, wäre dies kein Problem).
Alternativ können Sie ein reines Javascript-Polyfill (eine Neuimplementierung) von Canvas verwenden, das in WebWorker funktioniert: Ссылка Es ist erwähnenswert, dass auf diese Weise keine Hardwarebeschleunigung anwendbar ist.
In Kombination könnte eine gute Lösung erstellt werden.
Tags und Links javascript web-worker plotly