وب كارگر يك جاوااسكريپت است كه درپس زمينه اجرا ميشود، بدون اينكه برعملكرد صفحه تاثير بگذارد.
هنگام اجراي اسكريپت ها در يك صفحهHTML صفحه تازماني كه درحال اجراست واجراي آن تمام نشده، پاسخگوي اسكريپت نمي باشد .اما موارد ديگرصفحه فعال است.
وب كارگر يك جاوااسكريپت است كه مستقل از سايراسكريپت ها در پس زمين اجرا ميشود، بدون اينكه در حين اجرا برعملكرد صفحه تاثير بگذارد .در حاليكه آن اجرا ميشود، مي توانيد به انجام هركاري در صفحه ادامه دهيد .مثال كيك كردن، انتخاب چيزها وغيره.
اعداد مشخص شده در جدول اولين نسخه مرورگراست كه ازوب كارگر بطور كامل پشتيباني ميكند.
4 Jan 2010 | 10 Sep2012 | 3.5 Jun 2009 | 4 Jun 2009 | 11.5 Jun 2011 |
مثال ـ مثال وب كارگر. (Web Worker) در اين مثال وب كارگر اعداد را مي شمارد.
قبل از اينكه وب كارگر ايجاد نمائيد، پشتيباني مرورگرتان را كنترل نمائيد:
if (typeof(Worker) !== "undefined") { // Yes! Web worker support! // Some code..... } else { // Sorry! No Web Worker support.. }
اكنون بيائيد اسكريپت وب كاركر را در فايل بعنوان اسكريپت خارجي ايجاد كنيد .اين اسكريپت در "demo_workers.js"ذخيره ميشود .
let i = 0; function timedCount() { i ++; postMessage(i); setTimeout("timedCount()",500); } timedCount();
بخش مهم كد بالا متدpostMessage( ) است كه براي ارسال پيام به صفحه HTMLاستفاده ميشود .
توجه ـ معمولا وب كارگر براي چنين اسكريپت هاي ساده استفاده نمي شود، بلكه براي كارهاي فشرده فشرده ترCPU استفاده ميگردند .
فايل"demo_workers.js" ايجاد شده است، لازم است از طريق صفحه فراخوان شود .
خطوط زير بررسي ميكند كه وب كارگر از قبل وجود داشته باشد، وگر نه يك شئ وب كار جديد ايجاد و كد را در فايل فوق اجرا ميكند.
if (typeof(w) == "undefined") { w = new Worker("demo_workers.js"); }
سپس مي توانيم ازوب كارگر پيام ارسال و دريافت كنيم .براي اينكار يك شنونده رويداد"onmessag" را به آن اضافه ميكنيم:
w.onmessage = function(event){ document.getElementById("result").innerHTML = event.data; };
هنگاميكه وب كارگر پيامي را ارسال ميكند ، كد داخل شونده رويداد اجرا ميشود .داده هاي وب كارگر درevent.data ذخيره ميشود .
هنگامي كه يك شئ وب كارگر ايجاد ميشود، گوش دادن به پيام ها حتي پس از اتمام اسكريپت خارجي ادامه ميدهد .اين كار تازماني كه پايان يابد تداوم دارد.
براي خاتمه دادن به وب كارگر ومنابع رايگان مرورگر/كامپيوتر از متد terminate()استفاده ميكنيم :
اگر متغير وب كارگر يعني"w" پس از پايان كار آن با مقدار undefined ،تنظيم شود دوباره آن قابل استفاده ميباشد:
مثال ـ كد كامل وب كارگر
<!DOCTYPE html> <html> <body> <p Count numbers: </p> <button onclick="startWorker()">Start Worker <button onclick="stopWorker()">Stop Worker <script> let w; function startWorker() { if (typeof(w) == "undefined") { w = new Worker("demo_workers.js"); } w.onmessage = function(event) { document.getElementById("result").innerHTML = event.data; }; } function stopWorker() { w.terminate(); w = undefined; } </script > </body> </html>
چون كارگر وب در فايل خارجي(extennal file) است ،به اشياء جاوااسكريپت زير دسترسي ندارد: