Search⌘ K
AI Features

حلقة الحدث

فهم العمل الداخلي لحلقة الحدث.

التزامن

رغم أننا أشادنا Node.js لتشغيل التطبيقات على خيط واحد، إلا أن الأمر أكثر من ذلك. عندما نطلب من نظام التشغيل قراءة ملف نيابةً عنا، نستخدم API تطبيقات نظام الملفات. توفر لنا Node.js العديد من واجهات برمجة التطبيقات التي تسمح لنا بإنشاء غير متزامن العمليات التي يمكن تشغيلها في الخلفية دون التسبب في انتظار البرنامج الرئيسي بالنسبة لـ Node.js، تُكتب واجهات برمجة التطبيقات الأساسية هذه بلغة C++ ، وتكون خيوط المعالجة مخفية عنا. إذا سبق لك العمل مع خيوط المعالجة، فستدرك أن الأمور قد تصبح معقدة عند التعامل مع خيوط معالجة متعددة. حالات الجمود وحالات التسابق هي الأسوأ، لذا فإن إدارة Node.js لها ميزة جديرة بالثناء بلا شك.

كيف يعمل؟

دعونا نلقي نظرة على المكونات التي تجعل كل هذا ممكنا.

حلقة الحدث

ال حلقة الحدث حلقة الحدث هي العمود الفقري لـ Node.js، فهي تحل مشكلة تعدد الخيوط. يتم تهيئة حلقة الحدث عند تشغيل Node.js ويمكنها تنفيذ عمليات حظر أخرى بطريقة غير حظرية. يمكن تقسيم حلقة الحدث إلى مراحل، ولكن هذا خارج نطاق هذه الدورة.

svg viewer

قائمة الأحداث

تخزّن قائمة انتظار الأحداث الأحداث الواردة بشكل منظم. ثم تُمرّر هذه الأحداث واحدًا تلو الآخر إلى حلقة الأحداث.

svg viewer

مجموعة واجهات API

تتكون مجموعة واجهات API من جميع واجهات برمجة التطبيقات التي توفرها Node.js لتنفيذ أحداث الحظر بشكل غير متزامن.

svg viewer

في العمل

دعونا نرى كيف يتعامل Node.js مع الوظائف التي تستغرق وقتًا للمعالجة، مثلsetTimeout .setTimeout تُستخدم لتنفيذ دالة بعد فترة زمنية محددة. الوسيطة الأولى هي الدالة، وهي في حالتناlateFunc الحجة الثانية هي الوقت بالمللي ثانية. إذاlateFunc إذا أردنا أخذ حجج، فسيتم تمريرها بعد الحجة الثانية. إليك مثال:

function lateFunc() {
    console.log('This was done asynchronously!');
}

console.log('This is the first log');

setTimeout(lateFunc, 5000);

console.log('This is the second log');
Hit the RUN button to view the output

حاول تغيير مدة مهلة الانتظارsetTimeout وظيفة لرؤية كيفية تغير إخراج .


دعونا نرى ما يفعله Node.js خلف الشاشة.

ليس كل ما يلمع ذهبا

حلقة الأحداث جزء أساسي من Node.js ، وهي سر كفاءتها. مع ذلك، لا تزال Node.js محدودة بقدرة المعالجة التي يمكنها تسخيرها. البرامج المعقدة التي تتطلب معالجة مكثفة قد تُبطئ العمل بشكل كبير. بينما يمكن لـ Node.js التعامل مع غير متزامن الإدخال/الإخراج الإدخال/الإخراج على الرغم من سهولة تشغيله، إلا أنه غير مناسب للتطبيقات كثيفة الحوسبة مثل التعلم الآلي. لذا، من الضروري دراسة الإيجابيات والسلبيات قبل اختيار إطار عمل أو بيئة تشغيل.