5

これはちょっと説明が難しいですが、私は Web ワーカーを使用しており、Web ワーカー スクリプトで定義された関数を持っています。別の関数を引数として渡す特定の関数を呼び出したいのですが、問題は私がしようとしていることです。 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) {

}

したがって、このコードが間違っていて機能しないことはわかっていますが、私が何を達成しようとしているのかはわかっていると思います。

4

2 に答える 2

3

私はこのようなことをします:

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]();
}

または関数で別のオブジェクトを作成しますが、それがオブジェクトのメソッドであることを確認すると、そのように簡単に呼び出すことができます。

于 2013-08-01T16:37:31.737 に答える
2

vkTreadプラグインを確認することをお勧めします。このプラグインを使用すると、コードの任意の関数をスレッドで実行できます。

http://www.eslinstructor.net/vkthread/

よろしくお願いします、

--ヴァディム

于 2013-09-16T06:38:19.967 に答える