【发布时间】:2014-02-20 07:38:11
【问题描述】:
简单地说,我正在尝试在 web worker 中创建一个函数原型,而 chromium 抛出了这个错误:
Uncaught TypeError: Object #<DedicatedWorkerContext> has no method 'compute'
我认为需要一些示例代码。这是我工作日的结束,所以我很快就把它放在一起。整个下午都让我难以置信。我希望这是我明天早上回来说“啊哈”的问题之一,但如果我不会,我想我也会在这里问。
page.js
function threaded() {
var thread = new Worker('worker.js');
thread.postMessage({a: 1 b: 2});
thread.onMessage = function (e) {
console.log(e.data)
});
}
threaded();
worker.js
var foo = function(a,b) {
this.a = a
this.b = b
this.result = false;
this.compute();
};
foo.prototype.compute = function() {
this.result = this.a * this.b;
};
onmessage = function(e) {
var msg = foo(e.data.a,e.data.b)
postMessage(msg)
};
我也尝试过以不同的方式传唤 worker.js 以将 foo() 包含在 onmessage 中,如下所示,但收到以下错误:
Uncaught TypeError: Cannot set property 'a' of undefined
worker-take2.js
onmessage = function(e) {
var foo = function(a,b) {
this.a = a
this.b = b
this.result = false;
this.compute();
};
foo.prototype.compute = function() {
this.result = this.a * this.b;
};
var msg = foo(e.data.a,e.data.b)
postMessage(msg)
};
【问题讨论】:
-
顺便说一句,它也不会在网络工作者中工作。因此,在询问“prototype not working in web worker”之前,值得先在“正常”环境中检查它
标签: javascript html web-worker