0Pricing
Dart Academy · درس

حلقة الأحداث والمهام الصغيرة

افهم كيف تجدول Dart العمل غير المتزامن

حلقة الأحداث والمهام الصغيرة درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.

خيط واحد، بلا انتظار

تشغّل Dart التعليمات البرمجية في خيط واحد، ومع ذلك لا تتجمد. السر هو event loop الذي يجدول العمل بدلًا من حظره. ⚡

ما الذي يفعله Event Loop؟

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

المتزامن أولًا

تُنفَّذ أولًا كل التعليمات البرمجية العادية من الأعلى إلى الأسفل. ولا يبدأ loop بمعالجة المهام المجدولة إلا بعد انتهاء ذلك العمل synchronous.

قائمتان

يسحب loop المهام من طابورين: microtask queue وطابور الأحداث. تتقدم Microtasks دائمًا على الأحداث.

طابور Microtask

إن microtask عمل مؤجل صغير، مثل callback لـ Future مكتمل. ويُفرغ loop كل microtasks قبل لمس طابور الأحداث.

طابور الأحداث

يحتفظ event queue بعناصر أكبر: المؤقتات، وقراءات الملفات، والنقرات، واستجابات الشبكة. وتنتظر هذه العناصر حتى تكتمل جميع microtasks.

جدولة Microtask

يمكنك إرسال العمل إلى طابور microtask باستخدام scheduleMicrotask. ويُنفَّذ بعد التعليمات البرمجية الحالية، وقبل أي حدث.

scheduleMicrotask(() => print("microtask"));
print("right now");

جدولة حدث

يضع Timer (أو Future.delayed بقيمة صفر) callback في طابور الأحداث، لذلك يُنفَّذ بعد كل microtask معلقة.

Timer.run(() => print("event"));
print("right now");

Microtasks تفوز

إذا وُضعت المهمتان في الطوابير، تُنفَّذ microtask أولًا. ويحافظ هذا الترتيب على سرعة سلاسل Future وقابليتها للتوقع.

scheduleMicrotask(() => print("A"));
Timer.run(() => print("B"));
// prints A then B

لماذا يبقى التنفيذ سلسًا؟

بما أن كل مهمة تُنفَّذ حتى تكتمل، لا يتوقف تطبيقك في منتصف تحديث. ويحافظ loop على كل شيء responsive من دون إدارة يدوية للخيوط.

لا تُجوِّع Loop

قد يؤدي إغراق microtask queue إلى حظر الأحداث إلى الأبد، مما يجمد الإدخال. اجعل عمل microtask قصيرًا ودَع الأحداث تأخذ دورها.

تحقق سريع

تحقق سريع من ترتيب الطوابير.

مراجعة: Event Loop

تعلمت أن event loop يشغّل التعليمات المتزامنة أولًا، ثم يفرغ microtasks، ثم يعالج الأحداث. ويجعل هذا الترتيب Dart أحادية الخيط وسلسة في الوقت نفسه. 🎉

الأسئلة الشائعة

هل درس «حلقة الأحداث والمهام الصغيرة» مجاني؟

نعم — نص درس «حلقة الأحداث والمهام الصغيرة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.

ماذا ستتعلم في «حلقة الأحداث والمهام الصغيرة»؟

افهم كيف تجدول Dart العمل غير المتزامن تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟

لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «حلقة الأحداث والمهام الصغيرة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟

نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. حلقة الأحداث والمهام الصغيرة
  2. إنشاء Futures وانتظارها
  3. معالجة الأخطاء في الكود غير المتزامن
  4. Future.wait والعمل المتوازي
← العودة إلى Dart Academy