为什么我不断收到此错误?
我应该可以使用这个全局函数吧?
http://www.html5rocks.com/en/tutorials/workers/basics/
我正在使用铬。
我正在使用https://code.google.com/p/bitjs/它以
importScripts('io.js');
importScripts('archive.js');
为什么我不断收到此错误?
我应该可以使用这个全局函数吧?
http://www.html5rocks.com/en/tutorials/workers/basics/
我正在使用铬。
我正在使用https://code.google.com/p/bitjs/它以
importScripts('io.js');
importScripts('archive.js');
当您创建一个工作人员时,它实际上会执行两次。第一遍是在全局“窗口”对象的上下文中(意味着您可以访问所有窗口对象函数)。第二次调用是在具有不同全局对象的工作人员的上下文中,其中存在“importScripts”。
// proper initialization
if( 'function' === typeof importScripts) {
importScripts('script2.js');
addEventListener('message', onMessage);
function onMessage(e) {
// do some work here
}
}
请注意 addEventListener 在 if 语句中。如果你把它放在外面,你的回调将被注册两次。一次在“窗口”全局上,一次在工作人员的全局上。
快乐编码!
我也遇到了这个错误。就我而言,这是因为我正在使用 Karma/Jasmine 测试代码。由于测试框架,worker.js 文件也由主线程加载。
我通过将 worker.js 文件包装为以下内容来避免此错误:
if( 'undefined' === typeof window){
importScripts('workerscript2.js');
...
}
请参阅下面 Rob 的评论,它提供了一种替代解决方案。
感谢您提供避免错误的解决方案。我是新手,所以无法投票但写下来,我只是将我的线路替换importScripts('Myworkerscript.js');
为
if( 'undefined' === typeof window){
importScripts('Myworkerscript.js');
}
魔法发生了,错误消失了。
如果是您面临的 linting 问题,您可以在包含 importScripts 的文件中添加以下注释
/* eslint-disable no-undef */