2017-07-27 63 views
0

我正在編寫一個程序,該程序在web-workers中執行任意用戶提供的代碼。我將工作者代碼構建爲blob,將用戶提供的代碼動態插入到其中,然後從該blob實例化工作人員。我最初嘗試只從工作人員那裏評估代碼,但不得不切換到這種方法,因爲我需要能夠看到堆棧跟蹤&錯誤的行號。作爲網絡工作者的一部分,需要使用來自CDN和我自己的服務器的importScripts()導入幾個腳本。因爲我現在需要在每次運行代碼時實例化一個新的工作者,所以在每次運行開始時腳本導入需要很長時間。有沒有辦法減少這個時間?可能通過爲所有未來的工作人員只輸入一次所有必要的腳本?或者,這些腳本可以幫助實質性地提供幫助嗎?加快或避免在WebWorker中使用importScripts

謝謝!

回答

0

你應該這樣做:

  • 創建導入您需要的腳本
  • 然後讓工人等待「執行代碼」的消息
  • 此消息將包含用戶的代碼工人
  • 工人將使用new Function("string")
  • 轉換代碼然後該函數將被執行

這就是我所做的測試一些代碼,這裏已經運行時:http://darker.github.io/asteroids/demo-elastic-bounce/

而網絡工作者運行您可以編輯功能。

雖然你可以嘗試在網上將有瑕疵的腳本:

  • 醜陋的代碼
  • 可能CORS問題