نعلم جميعًا أن المتصفح ينفذ تعليمات برمجية js في سلسلة رسائل واحدة. عند تنفيذ خطوة الصفحة، لا يمكن للصفحة الاستجابة لأي شيء آخر حتى تنتهي الخطوة. يمكن لـ WebWorkers المقدم هنا تغيير كل شيء.
WebWorkers عبارة عن رموز js تعمل في الخلفية، بشكل مستقل عن البرامج النصية الأخرى ولن تؤثر على أداء الصفحة. يمكننا الاستمرار في القيام بكل ما نريد: النقر، وتحديد المحتوى، وما إلى ذلك، بينما يعمل WebWorkers في الخلفية.
يتم دعم عمال الويب بواسطة جميع المتصفحات الرئيسية باستثناء Internet Explorer.
الخطوة الأولى: توليد العمال.اتصل بمنشئ Worker() وحدد URI للبرنامج النصي الذي سيتم تشغيله في مؤشر ترابط العامل. على سبيل المثال، تحدد الصفحة الحالية أن البرنامج النصي الذي يتم تنفيذه بواسطة مؤشر ترابط العامل هو script-worker.js.
var myWorker = new Worker(script-worker.js);
في script-worker.js يمكننا تنفيذ تعليمات برمجية إضافية، ولن يؤثر تنفيذ هذه التعليمات البرمجية على الصفحة للقيام بأشياء أخرى تريد القيام بها، وهو ما يبدو رائعًا.
الخطوة 2: تمرير البيانات.يمكن أن تتفاعل الصفحة مع العامل لنقل البيانات، حتى يتمكن العامل من الحساب بصمت دون التأثير على قدرة الصفحة على القيام بأشياء ذات معنى، ثم اطلب من الصفحة استخدام البيانات.
//[رمز الصفحة الرئيسية]myWorker.postMessage(data-from-mainpage);//[رمز العامل]onmessage = function (oEvent) { console.log(البيانات المرسلة من الصفحة الرئيسية هي: +oEvent.data)) };ما ورد أعلاه هو الوضع [ترسل الصفحة الرئيسية البيانات إلى البرنامج النصي العامل]، نعم، لقد رأيت رسالة بريدية ودية للغاية، حسنًا، يعجبني هذا الشيء.
//[رمز الصفحة الرئيسية] myWorker.onmessage = function (oEvent) { console.log(البيانات المرسلة بواسطة البرنامج النصي للعامل هي: +oEvent.data) }; //[رمز العامل]postMessage(data-from-) الصفحة الرئيسية)؛ما ورد أعلاه هو موقف [البرنامج النصي العامل الذي يرسل البيانات إلى الصفحة الرئيسية] لا يزال بسيطًا للغاية، ولكن هذه مجرد واجهات برمجة التطبيقات (APIs) والمفتاح هو أن الاستخدام الذكي مفيد.
بالإضافة إلى ذلك، قد تكون هناك أخطاء في تنفيذ العامل، وتمرير الصفحة الرئيسية:
myWorker.onerror=function(oEvent){};يمكنك مراقبة أخطاء العمال.
الخطوة 3: نقاط مهمة.يمكن لمؤشر ترابط العامل تنفيذ المهام دون التدخل في واجهة المستخدم. كود JavaScript الذي تم تنفيذه موجود بالكامل في نطاق آخر ولا يشارك النطاق مع الكود الموجود في صفحة الويب الحالية.
يتم توفير طريقة importScripts() في النطاق العام للعامل، الذي يتلقى عنوان URL واحدًا أو أكثر يشير إلى ملفات JavaScript، ويتم تنفيذ عملية التحميل بشكل غير متزامن.
لن يصبح importScripts() ساري المفعول إلا إذا قمت بتوفير URI مطلق، وكانت عملية التنفيذ أيضًا غير متزامنة.
عندما نقوم بإنشاء كائن WebWorkers، فإنه سيستمر في الاستماع إلى الرسائل (حتى بعد اكتمال البرنامج النصي الخارجي) حتى يتم إنهاؤه. استخدم الأسلوب myWorker.terminate() لإنهاء WebWorkers وتحرير موارد المتصفح/الكمبيوتر.
الخطوة 4: القيود الهامة.1. غير قادر على الوصول إلى عقد DOM أو المتغيرات العامة أو الوظائف العامة، وغير قادر على استدعاء وظائف مثل التنبيه () أو التأكيد، وغير قادر على الوصول إلى المتغيرات العامة للمتصفح مثل النافذة والمستند؛
2. ومع ذلك، لا يزال بإمكان Javascript في Web Worker استخدام وظائف مثل setTimeout() وsetInterval()، ويمكنه أيضًا استخدام كائن XMLHttpRequest لاتصالات Ajax.
ما ورد أعلاه هو المحتوى الكامل لهذه المقالة وآمل أن يكون مفيدًا لدراسة الجميع وآمل أيضًا أن يدعم الجميع شبكة VeVb Wulin.