2017-07-27 253 views
0

我正在编写一个程序,该程序在web-workers中执行任意用户提供的代码。我将工作者代码构建为blob,将用户提供的代码动态插入到其中,然后从该blob实例化工作人员。我最初尝试只从工作人员那里评估代码,但不得不切换到这种方法,因为我需要能够看到堆栈跟踪&错误的行号。作为网络工作者的一部分,需要使用来自CDN和我自己的服务器的importScripts()导入几个脚本。因为我现在需要在每次运行代码时实例化一个新的工作者,所以在每次运行开始时脚本导入需要很长时间。有没有办法减少这个时间?可能通过为所有未来的工作人员只输入一次所有必要的脚本?或者,这些脚本可以帮助实质性地提供帮助吗?加快或避免在WebWorker中使用importScripts

谢谢!

回答

0

你应该这样做:

  • 创建导入您需要的脚本
  • 然后让工人等待“执行代码”的消息
  • 此消息将包含用户的代码工人
  • 工人将使用new Function("string")
  • 转换代码然后该函数将被执行

这就是我所做的测试一些代码,这里已经运行时:http://darker.github.io/asteroids/demo-elastic-bounce/

而网络工作者运行您可以编辑功能。

虽然你可以尝试在网上将有瑕疵的脚本:

  • 丑陋的代码
  • 可能CORS问题