0
我目前正在創建一個應用程序,用戶可以在圖像上應用過濾器。無論如何,取決於圖像的大小,應用過濾器的腳本可能需要很長時間。所以我想給工人一個嘗試。 (PHP不是BTW替代)與網絡工作者訪問預製功能
所以首先我有我的功能應用的過濾器,它工作得很好(工人外)。所以,下面的代碼我有
主要的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 is not defined」...對於jQuery代碼也是如此:「ReferenceError:$未定義」。
我有點理解這裏的問題,但我不知道如何解決它。
我希望有人能幫助我:)
謝謝,我使用camanJs的過濾器,當我通過importScripts包括腳本我得到的錯誤:「ReferenceError:窗口沒有定義」,所以我想我不能在這裏使用工人,即使我使用目的。 – user2839873
是的,因爲大部分窗口方法都不可用。您可以在這裏查看可能的方法:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Functions_and_classes_available_to_workers – Fearodin
謝謝,有沒有其他方法可以在後臺運行腳本?就像在服務器上執行腳本並返回數據URI一樣? – user2839873