【问题标题】:Web Worker with dynamic importScripts values具有动态 importScripts 值的 Web Worker
【发布时间】:2014-03-01 10:03:43
【问题描述】:

在定义 Web Worker 时,是否可以动态构造传递给 importScripts() 的值?

我的工作人员目前导入两个脚本:

importScripts('lunr.min.js', 'underscore-1.5.0-min.js');

这很好用,但我也想实现捆绑。我想将这些文件保留在捆绑包中,但要做到这一点,我需要使用捆绑包名称而不是单个文件。

我已经查看了 specbetter articles 我可以找到,我尝试了几种不同的方法,但没有任何效果。有一些关于 importScripts() 同步的引用,如果它在工作人员刚上任时就被调用,我不确定我想做的事情是否可行。

【问题讨论】:

  • 定义“实现捆绑”。
  • 通过捆绑我的意思是,我需要指向我的一个捆绑文件,而不是在 importScripts() 中使用两个单独的 JavaScript 文件,该文件是由我的捆绑和缩小过程产生的。在我的开发环境中,我将拥有这两个单独的文件,但是当我部署时,我会将我的库捆绑到一个文件中。这有帮助吗?

标签: web-worker


【解决方案1】:

如果我正确理解了您的问题,您希望这样做:

// array of script filenames
var scripts = ['lunr.min.js', 'underscore-1.5.0-min.js'];

然后以某种方式调用importScripts,以便导入所有这些脚本。你可以这样做:

importScripts.apply(null, scripts);

这是因为 importScripts 接受多个 URL 作为参数。

【讨论】:

  • 很抱歉,我没有很好地表达自己。我很感激你的时间!在我的开发版本中,我将使用 importScripts('lunr.min.js', 'underscore-1.5.0-min.js');在我的生产版本中,我想要类似 importScripts('/bundles/lib?v=gCej6Km_nUiP5QKoo15Dw0rHSy5-XXYrfbE9inJ-fG01');该捆绑包名称可以更改,因此我想将其作为变量传递,也许是在我创建新的 WebWorker 或作为消息时。我已经对其进行了研究和尝试,但这似乎不是我可以从工人外部改变的东西。
  • @Mattio 嗯,也许你可以使用workerify
  • 我会检查的。谢谢!
【解决方案2】:

马蒂奥,

看看插件vkThread

在这个插件中,您将依赖项(导入脚本)作为字符串数组提供,并且您可以轻松地使用该数组进行操作。

如果您有任何问题,请告诉我。

--瓦迪姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2022-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多