importScripts(网络工作者)

Vin*_*ent 28 javascript html5 web-worker

我曾尝试使用importScripts将第二个JavaScript文件加载到我的Web worker中,但是虽然没有发生错误但它没有用.我把问题缩小到这个非常简单的情况:

在主HTML文件中:

<script>
var w = new Worker("script1.js");
w.addEventListener("message", function(e){
    alert(e.data);
})
w.postMessage();
</script>
Run Code Online (Sandbox Code Playgroud)

在script1.js中:

self.addEventListener("message", function(e){
    var a = 5;
    importScripts("script2.js");
    self.postMessage(a);
})
Run Code Online (Sandbox Code Playgroud)

在script2.js中:

a = 6
Run Code Online (Sandbox Code Playgroud)

我想看到一个显示6的对话框,因为a通过导入script2.js从5更改为6,但对话框显示5.我在这里缺少什么?

dan*_*vis 39

var a在函数中使用意味着a永远是私有的.由于importScripts添加到全局范围,因此JS更喜欢访问发布a的函数中更本地化的内容a.你可以发布self.a,如你所料,它应该是6.

编辑:有人最近亲自询问了我,所以我做了一个演示来澄清行为:http://pagedemos.com/importscript/

  • pagedemos.com 返回来自 Google 安全浏览的警告。你能把它移到像jsfiddle这样的地方吗? (3认同)