English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يتم تشغيل web worker في الخلفية، ولا يؤثر على أداء الصفحة.
عند تشغيل سكربت في صفحة HTML، يصبح حالة الصفحة غير الاستجابة حتى يكتمل السكربت.
يتم تشغيل web worker في الخلفية، ويكون JavaScript مستقلًا عن السكربتات الأخرى، ولا يؤثر على أداء الصفحة. يمكنك الاستمرار في القيام بأي شيء تريده: النقر، اختيار النص، وما إلى ذلك، بينما يعمل web worker في الخلفية.
يدعم متصفحات Internet Explorer 10، Firefox، Chrome، Safari و Opera Web workers.
في المثال التالي، يتم إنشاء web worker بسيط يقوم بالعد في الخلفية:
كود ملف demo-workers.js:
var i=0;
function timerCount()
{
i=i+1;
postMessage(i);
setTimeout("timerCount()",500);
}
timerCount();
قبل إنشاء web worker، يرجى التحقق من دعم متصفح المستخدم له:
if(typeof(Worker)!=="undefined")
{
// نعم! يدعم Web worker!
// بعض التعليمات.....
}
else
{
//آسف! Web Worker غير مدعوم
}
الآن، دعونا ننشئ جسم web worker في JavaScript الخارجي.
في هذا المكان، قمنا بإنشاء سكربت العد. يتم تخزينه في ملف "demo-workers.js":
var i=0;
function timerCount()
{
i=i+1;
postMessage(i);
setTimeout("timerCount()",500);
}
timerCount();
جزء مهم من التعليمات أعلاه هو دالة postMessage() - وهي تستخدم لمرسل رسالة إلى صفحة HTML.
ملاحظة: عادةً لا يستخدم web worker في هذه السكربتات البسيطة، بل في المهام التي تتطلب موارد CPU بشكل كبير.
لدينا ملف web worker، الآن نحتاج إلى استدعاءه من صفحة HTML.
التعليمات التالية تفحص وجود worker، إذا لم يكن موجودًا،- سينشئ جسمًا جديدًا من web worker ويشغل التعليمات في ملف "demo-workers.js":
if(typeof(w)=="undefined")
{
w=new Worker("demo-workers.js");
}
ثم يمكننا استقبال الرسائل من العامل الافتراضي.
أضف مستمع "onmessage" إلى العامل الافتراضي Web:
w.onmessage=function(event){
document.getElementById("result").innerHTML=event.data;
};
عندما يرسل العامل الافتراضي رسالة، سيتم تنفيذ الكود الموجود في مستمع الحدث. يحتوي event.data على البيانات المأخوذة من event.data.
بعد إنشاء عنصر العامل الافتراضي، سيستمر في الاستماع إلى الرسائل (حتى بعد اكتمال سكريبت الخارجي) حتى يتم إيقافه.
لإيقاف وظيفة العامل الافتراضية وتحرير موارد المتصفح/الحاسوب، استخدم طريقة terminate().
w.terminate();
لقد رأينا الآن كود العامل في ملف .js. إليك الآن كود صفحة الويب:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>موقع دروس الأساسيات (oldtoolbag.com)</title> </head> <body> <p>عدد: <output id="result"></output></p> <button onclick="startWorker()">بدء العمل</button> <button onclick="stopWorker()">توقف العمل</button> <p><strong>ملاحظة:</strong> متصفح إنترنت إكسبلورر 9 وأحدث إصداراته لا يدعم وظائف العمال الافتراضية Web.</p> <script> var w; function startWorker() { if(typeof(Worker) !== "undefined") { if(typeof(w) == "undefined") { w = new Worker("demo-workers.js"); } w.onmessage = function(event) {}} document.getElementById("result").innerHTML = event.data; }; } else { document.getElementById("result").innerHTML = "آسف، متصفحك لا يدعم Web Workers..."; } } function stopWorker() { w.terminate(); w = undefined; } </script> </body> </html>التحقق من هذا لـ ‹/›
بما أن العمال الويب يوجدون في ملفات خارجية، فإنهم لا يمكنهم الوصول إلى العناصر التالية من JavaScript:
مفردة النافذة
مفردة المستند
مفردة الورثة