我曾尝试使用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的对话框,因为通过导入script2.js将a从5更改为6,但对话框显示5。
发布于 2013-05-01 07:51:05
在函数中使用var a意味着a将始终是私有的。由于importScripts adds to the global scope,JS更喜欢在posts a的函数中访问本地化程度更高的a。你可以发布self.a,它应该是6,正如你所期望的那样。
编辑:最近有人当面问我这个问题,所以我做了一个演示来澄清这个行为:http://pagedemos.com/importscript/
https://stackoverflow.com/questions/16310091
复制相似问题