شبيبة تعليمي

شبيبة المنزل مقدمة شبيبة شبيبة إلى أين إخراج JS بيانات شبيبة بناء جملة JS تعليقات JS متغيرات JS JS Let شبيبة كونست مشغلي JS شبيبة الحساب احالة JS أنواع بيانات JS وظائف JS كائنات JS أحداث شبيبة سلاسل شبيبة طرق سلسلة JS بحث سلسلة JS JS String Templates أرقام شبيبة طرق عدد JS صفيفات JS طرق صفيف JS ترتيب صفيف JS تكرار صفيف JS JS Array Const تواريخ شبيبة تنسيقات التاريخ JS طرق الحصول على تاريخ JS طرق تعيين تاريخ JS شبيبة الرياضيات شبيبة عشوائية شبيبة منطقية مقارنات شبيبة شروط JS مفتاح JS JS Loop For JS Loop For In. شبيبة حلقة JS لـ Of شبيبة حلقة بينما شبيبة استراحة شبيبة تكرارات مجموعات JS خرائط شبيبة شبيبة تايبوف JS نوع التحويل شبيبة Bitwise JS RegExp أخطاء JS شبيبة النطاق رفع JS وضع JS الصارم شبيبة هذه الكلمة دالة سهم JS فئات JS شبيبة شبيبة تصحيح أخطاء JS دليل أسلوب JS أفضل ممارسات JS أخطاء JS أداء JS شبيبة الكلمات المحجوزة

إصدارات JS

إصدارات JS JS 2009 (ES5) شبيبة 2015 (ES6) شبيبة 2016 شبيبة 2017 شبيبة 2018 شبيبة آي إي / إيدج تاريخ شبيبة

كائنات JS

تعريفات الكائن خصائص الموضوع طرق الكائن عرض الكائن موصلي الكائنات منشئو الكائنات نماذج الكائن كائن تكرارات مجموعات الكائن خرائط الكائن مرجع الكائن

وظائف JS

تعريفات الوظائف معلمات الوظيفة استدعاء الوظيفة استدعاء الوظيفة تطبيق الوظيفة عمليات إغلاق الوظائف

فئات JS

مقدمة عن الفصل الوراثة الطبقية فئة ثابتة

شبيبة آسينك

عمليات الاسترجاعات JS شبيبة غير متزامن وعود شبيبة شبيبة Async / انتظار

JS HTML DOM

مقدمة DOM طرق DOM مستند DOM عناصر DOM DOM HTML نماذج DOM DOM CSS الرسوم المتحركة DOM أحداث DOM مستمع أحداث DOM التنقل في DOM عقد DOM مجموعات DOM قوائم عقدة DOM

متصفح JS BOM

نافذة JS شاشة JS موقع JS تاريخ شبيبة شبيبة ملاح تنبيه منبثق لـ JS توقيت شبيبة ملفات تعريف الارتباط JS

JS Web APIs

مقدمة واجهة برمجة تطبيقات الويب واجهة برمجة تطبيقات نماذج الويب واجهة برمجة تطبيقات سجل الويب واجهة برمجة تطبيقات تخزين الويب Web Worker API واجهة برمجة تطبيقات جلب الويب واجهة برمجة تطبيقات تحديد الموقع الجغرافي على الويب

شبيبة أجاكس

مقدمة أجاكس أجاكس XMLHttp طلب AJAX استجابة AJAX ملف AJAX XML أجاكس بي إتش بي أجاكس آسيا والمحيط الهادئ قاعدة بيانات أجاكس تطبيقات أجاكس أمثلة AJAX

شبيبة شبيبة

مقدمة JSON بناء جملة JSON JSON مقابل XML أنواع بيانات JSON تحليل JSON تنسيق JSON كائنات JSON صفائف JSON خادم JSON JSON PHP JSON HTML جسون جسونب

JS مقابل jQuery

محددات jQuery jQuery HTML jQuery CSS jQuery DOM

شبيبة الرسومات

شبيبة الرسومات قماش شبيبة شبيبة بلوتلي JS Chart.js مخطط جوجل JS شبيبة D3.js

أمثلة JS

أمثلة JS JS HTML DOM إدخال JS HTML كائنات JS HTML أحداث HTML متصفح JS محرر JS تمارين شبيبة شبيبة مسابقة شهادة JS

مراجع JS

كائنات جافا سكريبت كائنات HTML DOM


Web Workers API


عامل الويب هو جافا سكريبت يعمل في الخلفية ، دون التأثير على أداء الصفحة.


ما هو عامل الويب؟

عند تنفيذ البرامج النصية في صفحة HTML ، تصبح الصفحة غير مستجيبة حتى ينتهي البرنامج النصي.

عامل الويب هو جافا سكريبت يتم تشغيله في الخلفية ، بشكل مستقل عن البرامج النصية الأخرى ، دون التأثير على أداء الصفحة. يمكنك الاستمرار في فعل ما تريد: النقر واختيار الأشياء وما إلى ذلك ، بينما يعمل عامل الويب في الخلفية.

دعم المتصفح

تحدد الأرقام الواردة في الجدول إصدارات المستعرض الأولى التي تدعم Web Workers بشكل كامل:

Chrome 4 IE 10 Firefox 3.5 Safari 4 Opera 11.5
Jan 2010 Sep 2012 Jun 2009 Jun 2009 Jun 2011

مثال على عمال الويب

ينشئ المثال أدناه عامل ويب بسيطًا يقوم بحساب الأرقام في الخلفية:

مثال

Count numbers:


تحقق من دعم Web Worker

قبل إنشاء عامل ويب ، تحقق مما إذا كان متصفح المستخدم يدعمه:

if (typeof(Worker) !== "undefined") {
  // Yes! Web worker support!
  // Some code.....
} else {
  // Sorry! No Web Worker support..
}


قم بإنشاء ملف Web Worker

الآن ، لنقم بإنشاء عامل الويب الخاص بنا في JavaScript خارجي.

هنا ، نقوم بإنشاء برنامج نصي مهم. يتم تخزين النص البرمجي في ملف "demo_workers.js":

let i = 0;

function timedCount() {
  i ++;
  postMessage(i);
  setTimeout("timedCount()",500);
}

timedCount();

الجزء المهم من الكود أعلاه هو postMessage()الطريقة - التي تُستخدم لإرسال رسالة مرة أخرى إلى صفحة HTML.

ملاحظة: عادة لا يتم استخدام العاملين على الويب لمثل هذه البرامج النصية البسيطة ، ولكن لمزيد من المهام المكثفة لوحدة المعالجة المركزية.


قم بإنشاء كائن Web Worker

الآن بعد أن أصبح لدينا ملف Web worker ، نحتاج إلى تسميته من صفحة HTML.

تتحقق الأسطر التالية مما إذا كان العامل موجودًا بالفعل ، إذا لم يكن كذلك - يقوم بإنشاء كائن عامل ويب جديد وتشغيل الكود في "demo_workers.js":

if (typeof(w) == "undefined") {
  w = new Worker("demo_workers.js");
}

ثم يمكننا إرسال واستقبال الرسائل من عامل الويب.

أضف مستمع حدث "onmessage" إلى عامل الويب.

w.onmessage = function(event){
  document.getElementById("result").innerHTML = event.data;
};

عندما ينشر عامل الويب رسالة ، يتم تنفيذ الكود داخل مستمع الحدث. يتم تخزين البيانات من عامل الويب في event.data.


إنهاء عامل الويب

عندما يتم إنشاء كائن عامل الويب ، فإنه سيستمر في الاستماع للرسائل (حتى بعد انتهاء النص الخارجي) حتى يتم إنهاؤه.

لإنهاء عامل الويب ، والحصول على موارد متصفح / كمبيوتر مجانية ، استخدم terminate()الطريقة:

w.terminate();

أعد استخدام Web Worker

إذا قمت بتعيين المتغير العامل على غير محدد ، بعد أن تم إنهاؤه ، يمكنك إعادة استخدام الكود:

w = undefined;

مثال على كود عامل الويب الكامل

لقد رأينا بالفعل رمز العامل في ملف .js. فيما يلي رمز صفحة HTML:

مثال

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>

<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>

عمال الويب و DOM

نظرًا لأن العاملين على الويب في ملفات خارجية ، فلا يمكنهم الوصول إلى كائنات JavaScript التالية:

  • كائن النافذة
  • كائن المستند
  • الكائن الأصل