【问题标题】:Web Worker loading of absolute URLWeb Worker 加载绝对 URL
【发布时间】:2012-06-27 23:47:35
【问题描述】:

Can I load a web worker script from an absolute URL? - 这里的答案是否定的。

不过,我还是发现了一个 hack:

var worker; //= new Worker('http://xyz/FSWorker.js');
var xhr = new XMLHttpRequest();
xhr.open("GET", 'http://xyz/FSWorker.js');
xhr.responseType = 'blob';
xhr.onload = function(e) {
    var blob = this.response;
    worker = new Worker(window.URL.createObjectURL(blob));
    fs_ready(); // do more stuff here
};

xhr.send(null);

我不太喜欢这种方法 - 我现在必须在 XHR 完成后才开始使用 worker。另一种选择是使用 inline worker,但这更难看,因为我必须将所有代码放入一个巨大的字符串中。

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: html xmlhttprequest web-worker


    【解决方案1】:

    您发现了 Web Workers 的一个巧妙功能 - 您可以从几乎任何任意文本 blob 创建。

    如果您将脚本作为<script> 节点加载到当前页面上,您可以使用类似的Blob 技术从它创建一个Web Worker。至于加载远程脚本,您的relying on XHR 与访问远程脚本的文本内容一样优雅。

    【讨论】:

    • 谢谢。唯一的问题是我认为它更慢。代码将在额外的 RTT 后运行以获取脚本。而且我不会喜欢浏览器做的优化。
    猜你喜欢
    • 1970-01-01
    • 2019-05-26
    • 2021-09-27
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 2017-09-06
    • 2016-02-26
    • 1970-01-01
    相关资源
    最近更新 更多