修改XmlHttpRequest原型以在Web Workers中使用

时间:2016-10-01 05:42:05

标签: javascript web-worker

我正在尝试在我的应用程序中记录使用XmlHttpRequest发出的所有请求。

我的应用程序利用Tangram库来渲染WebGL地图。 Tangram使用Web Workers来请求数据在单独的线程上构建映射。

在我的HTML页面的头部,我有以下代码:

<!-- Log XMLHttpRequest -->
<script>

  (function(open) {

    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
      console.log(arguments);
      return open.call(this, method, url, async, user, pass);
    };
  })(XMLHttpRequest.prototype.open);

</script>

这会成功记录在主线程中发出的任何请求,但无法记录由Tangram旋转的Worker线程内的任何内容。有没有办法(最好不修改任何Tangram源代码)来实现我想要做的事情?

注意:我的主要兴趣是扩展XmlHttpRequest对象的功能,以便在Web Workers中使用 - 不一定用于日志记录。我刚刚以日志记录为例。

感谢您提供的任何建议/指导!

Strainy

1 个答案:

答案 0 :(得分:1)

您必须在Web worker中运行相同的代码。工人的全球范围完全不同。您在主线程中设置的变量不会对worker产生任何影响。

我建议您将该代码放在文件中,以便可以从主线程和Web工作者链接到它。