2017-07-27 5 views
0

Ich schreibe ein Programm, das willkürliche Benutzer bereitgestellten Code in Web-Worker ausführt. Ich konstruiere den Worker-Code als Blob, wobei der vom Benutzer bereitgestellte Code dynamisch eingefügt wird, und instanziiert den Worker dann aus diesem Blob. Ich hatte anfangs versucht, nur den Code vom Worker auszuwerten, musste aber zu diesem Ansatz wechseln, da ich Stack-Traces & Zeilennummern für Fehler sehen muss. Als Teil meines Web-Mitarbeiters müssen mehrere Scripts mit importScripts() importiert werden, sowohl von einem CDN als auch von meinem eigenen Server. Da ich jedes Mal, wenn ich den Code ausführe, einen neuen Worker instanziieren muss, dauert der Import des Skripts zu Beginn jedes Laufs sehr lange. Gibt es eine Möglichkeit, diese Zeit zu reduzieren? Möglicherweise durch den einmaligen Import aller notwendigen Skripte für alle zukünftigen Arbeiter? Oder würde die Einfügung der Skripte wesentlich helfen?Beschleunigen oder vermeiden Sie die Verwendung von importScripts in WebWorker

Danke!

Antwort

0

Sie sollten dies tun:

  • einen Arbeiter erstellen, die Skripte importiert Sie benötigen
  • dann die Arbeiter warten lassen für „Ausführen von Code“ Nachricht
  • Diese Nachricht Code des Benutzers enthalten
  • Arbeiter wird den Code mit new Function("string")
  • konvertieren, dann wird die Funktion
ausgeführt werden

Es ist, was ich tat, als einige Code zu testen, die bereits hier läuft: http://darker.github.io/asteroids/demo-elastic-bounce/

Sie können die Funktion bearbeiten, während Web-Worker läuft.

Sie können zwar versuchen, in-line die Skripte, die Fehler haben:

  • hässlich Code
  • möglich CORS gibt
Verwandte Themen