Como passar funções para o JavaScript Web Worker

Eu gostaria de passar uma função (ou funções) através de umpostMessage() para um web worker, porque não posso me referir a arquivos regulares.

Para expulsar o web worker, estou passando um URL de objeto (criado de um Blob) para oWorker construtor. Então estou passando uma mensagem, mas até agora não tenho sorte em colocar uma função na mensagem.

A mensagem (JSON) não pode conter funções diretamente (conforme estipuladoAqui), e embora importScripts seja teoricamente permitido, ainda não tive sucesso em usá-lo no Chrome ou no Firefox.

O corpo do arquivo html:

<div id="divText">1234</div>
<script>
    var greeter = function greet(name) {
        return "hello " + name;
    };
    function webWorkerWorker() {
        self.postMessage("started1");
        self.onmessage = function(event) {
            importScripts(event.data.content);
            self.postMessage("importScripts success");
            var result = greeter("john");
            self.postMessage(result);
        };
    }
    var functionBody = mylib.extractFunctionBody(webWorkerWorker);
    var functionBlob = mylib.createBlob([functionBody]);
    var functionUrl = mylib.createObjectURL(functionBlob);

    var functionBody2 = mylib.extractFunctionBody(greeter);
    var functionBlob2 = mylib.createBlob([greeter]);
    var functionUrl2 = mylib.createObjectURL(functionBlob2);

    var worker = new Worker(functionUrl);
    worker.onmessage = function(event) {
        document.getElementById("divText").innerHTML = event.data;
    }
    worker.postMessage({
                type: "init",
                content: functionUrl2
            });
</script>

Atualmente, isso resulta na configuração do valor divText para "sucesso do importScripts".

Estou fazendo algo errado? Existe outra maneira de as funções serem passadas para os web workers? Ou isso não é possível?

questionAnswers(3)

yourAnswerToTheQuestion