【问题标题】:Speed up or avoid using importScripts in WebWorker加快或避免在 WebWorker 中使用 importScripts
【发布时间】:2018-01-03 16:21:41
【问题描述】:

我正在编写一个程序,在网络工作者中执行任意用户提供的代码。我将工作人员代码构建为一个 blob,其中用户提供的代码动态插入其中,然后从该 blob 实例化工作人员。我最初只是尝试评估工作人员的代码,但不得不切换到这种方法,因为我需要能够查看堆栈跟踪和错误行号。作为我的网络工作者的一部分,需要使用 importScripts() 从 CDN 和我自己的服务器导入几个脚本。由于我现在每次运行代码时都需要实例化一个新的工作人员,因此脚本导入在每次运行开始时需要很长时间。有什么办法可以缩短这个时间吗?可能只为所有未来的工作人员导入一次所有必要的脚本?或者,内联脚本是否有很大帮助?

谢谢!

【问题讨论】:

    标签: javascript optimization ecmascript-6 web-worker


    【解决方案1】:

    你应该这样做:

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

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

    您可以在 web worker 运行时编辑函数。

    虽然你可以尝试内联有缺陷的脚本:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-26
      • 1970-01-01
      • 2019-02-21
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      相关资源
      最近更新 更多