В настоящее время я создаю приложение, в котором пользователь может применять фильтр на изображениях. Во всяком случае, в зависимости от размера изображения сценарий для применения фильтра может занять много времени. Поэтому я хотел попробовать попробовать. (PHP не является альтернативой кстати)Доступ к готовым функциям с веб-работниками
Итак, сначала у меня есть функция, которая применяет фильтр, который работает просто отлично (за пределами рабочего) .so Вот код, у меня есть
Основной файла JavaScript, где Я определяю функцию и работник:
jQuery(function ($)
{
var worker = "undefined";
applyEffect();
CreateWorker(worker);
});
//function to apply the effect stands here
/*-------------------*/
/*WORKER*/
/*-------------------*/
//worker answers
function defineWorker(worker)
{
worker.onmessage = function(e)
{
if(e.data == "msg from worker")
{
console.log(e.data);
}
worker.terminate();
}
}
function CreateWorker(worker)
{
$("#filters li").click(function clickWorker()
{
if (typeof worker == "undefined")
{
worker.terminate()
}
else
{
console.log("worker created");
}
worker = new Worker('js/worker.js');
defineWorker(worker);
worker.postMessage("hello"); // Start the worker.
});
}
и вот работник (worker.js):
self.onmessage = function(e)
{
if(e.data == "hello")
{
applyFilter(Argument1,Argument2,function()
{
self.postMessage('msg from worker' + $(window).width());
});
}
}
Когда я пытаюсь запустить рабочий с помощью мыши, я г et "ReferenceError: applyFilter не определен" ... то же самое касается jQuery-кода: "ReferenceError: $ не определен".
Я как бы понимаю проблему здесь, но я не знаю, как ее решить.
Я надеюсь, что кто-то может помочь мне :)
Спасибо, я использую camanJs для фильтра, когда я включаю скрипт через importScripts. Я получаю сообщение об ошибке: «ReferenceError: window is not defined», поэтому, я думаю, я не могу использовать рабочего здесь, даже если я использую объект. – user2839873
yep, потому что большинство оконных методов недоступны. Вы можете проверить возможные методы здесь: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Functions_and_classes_available_to_workers – Fearodin
спасибо, есть ли другой способ запустить сценарий в фоновом режиме? например, выполнить скрипт на сервере и вернуть URI данных? – user2839873