Как передать функции в JavaScript Web Worker

Я хотел бы передать функцию (или функции) черезpostMessage() веб-работнику, потому что я не могу ссылаться на обычные файлы.

Чтобы запустить веб-работника, я передаю URL объекта (созданный из BLOB-объекта)Worker конструктор. Затем я передаю сообщение, но пока не повезло, добавив функцию в сообщение.

Сообщение (JSON) не может содержать функции напрямую (как предусмотреноВот), и хотя importScripts теоретически разрешен, я до сих пор не добился успеха в его использовании в Chrome или Firefox.

Тело 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>

В настоящее время это приводит к установке значения divText на «importScripts success».

Я делаю что-то неправильно? Есть ли другой способ передачи функций веб-работникам? Или это невозможно?

Ответы на вопрос(3)

Ваш ответ на вопрос