HTML 5 Worker "потоки", порождающий функцию - PullRequest
1 голос
/ 05 марта 2012

Я читал о рабочих потоках HTML 5, но все примеры, которые я видел, по-видимому, требуют, чтобы javascript был в своем собственном файле.

, поэтому я в основном задаюсь вопросом, возможно ли непосредственно начать рабочую работук функции.

Конечной целью здесь является нечто вроде:

function AllJavascriptIsLoaded()
{

if(gWorkersSupported)
{

        var Worker = new Worker(MyFunc)

        Worker.Start();
    }
    else 
    {
        // Horrible user experience incomming.
        MyFunc();
    }
}

function MyFunc()
{
    // Complex and time consuming tasks
}

Ответы [ 3 ]

1 голос
/ 05 марта 2012

Вы можете использовать то, что называется inline-worker.

По сути, вы создаете ресурс сценария через dataURI или BlobURL для рабочего сценария.Учитывая, что содержимое сценария может быть сгенерировано, вы можете использовать Function.toString() для создания содержимого работника.

Пример использования BlobURL: http://www.html5rocks.com/en/tutorials/workers/basics/
Пример использования обоих методов: https://github.com/jussi-kalliokoski/sink.js/blob/master/src/core/inline-worker.js

Джеффри прав насчет ограничения безопасности WebWorker.Код, работающий на рабочем месте, не может получить доступ к DOM, поэтому его следует использовать только для вычисления сложных задач.Если вы попытаетесь получить доступ к DOM внутри кода работника, это вызовет ошибку.

1 голос
/ 30 июля 2013

Плагин vkThread поможет вам реализовать именно то, что вы просили.

взгляните на http://www.eslinstructor.net/vkthread/

есть примеры для функций различного типа: обычная функция, функция с контекстом, с зависимостями, анонимная, лямбда-выражение.

1 голос
/ 05 марта 2012

Насколько мне известно, это не разрешено по соображениям безопасности.Я бы предположил, что дочерний объект или любой JS-скрипт в том же файле потенциально может иметь доступ к родительскому окну DOM, к которому веб-работникам не разрешен доступ.

Итак, мы застряли сразмещение сообщений в других файлах, если кто-то не найдет более приятного способа сделать это;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...