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/