importScripts(网络工作者)

时间:2013-04-30 22:38:11

标签: 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>

在script1.js中:

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

在script2.js中:

a = 6

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

1 个答案:

答案 0 :(得分:36)

在函数中使用var a意味着a将永远是私有的。自importScripts adds to the global scope起,JS更愿意访问发布a的函数中更加本地化的a。你可以发布self.a,而不是你想象的那样。

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