好的,这有点难以解释,但是在这里,我使用的是web worker,我在我的web worker脚本中定义了函数,我想调用一个特定的函数传入另一个函数作为参数,问题是我我试图使用worker.postMessage从我的主脚本执行此操作。如果我发布一些代码可能会更清楚......
这是我的主要脚本:
worker.postMessage({'cmd': 'register', 'funcName': 'someFunction'});
这是来自工人脚本:
self.addEventListener('message', function(e) {
var data = e.data;
switch (data.cmd) {
case 'register':
registerEvent(data.funcName);
break;
case 'unregister':
break;
default:
self.postMessage('Unknown command: ' + data.msg);
};
}, false);
function someFunction() {
}
function registerEvent(someFunction) {
}
所以我知道这段代码是错误的,不会起作用,但我想你已经知道我想要实现的目标。
答案 0 :(得分:2)
我会做这样的事情:
self.addEventListener('message', function(e) {
var data = e.data;
switch (data.cmd) {
case 'register':
registerEvent(data.funcName);
break;
case 'unregister':
break;
default:
self.postMessage('Unknown command: ' + data.msg);
};
}, false);
self.someFunction = function() {}
function registerEvent(someFunctionName) {
self[someFunctionName]();
}
或使用该函数创建一个单独的对象,但要确保它是一个对象的方法,然后就可以很容易地调用它。
答案 1 :(得分:1)