首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >importScripts (web workers)

importScripts (web workers)
EN

Stack Overflow用户
提问于 2013-05-01 06:38:11
回答 1查看 49.5K关注 0票数 34

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

在主HTML文件中:

代码语言:javascript
复制
<script>
var w = new Worker("script1.js");
w.addEventListener("message", function(e){
    alert(e.data);
})
w.postMessage();
</script>

在script1.js中:

代码语言:javascript
复制
self.addEventListener("message", function(e){
    var a = 5;
    importScripts("script2.js");
    self.postMessage(a);
})

在script2.js中:

代码语言:javascript
复制
a = 6

我希望看到显示6的对话框,因为通过导入script2.js将a从5更改为6,但对话框显示5。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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/

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16310091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档