0Pricing
Dart Academy · درس

Future.wait والعمل المتوازي

شغّل عدة Futures بالتزامن

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

الانتظار واحدًا تلو الآخر بطيء

يجعل انتظار futures بالتسلسل كل واحدة منها تنتظر السابقة. لذلك تستغرق ثلاثة استدعاءات، مدة كل منها ثانية واحدة، ثلاث ثوانٍ إجمالًا.

شغّلها معًا

ابدأ الاستدعاءات غير المتزامنة المستقلة أولًا، ثم انتظرها. فهي تعمل concurrently، لذلك يعتمد الوقت الإجمالي على الأبطأ لا على مجموع الأزمنة.

تعرّف إلى Future.wait

تأخذ Future.wait قائمةً من futures، وتعيد future واحدًا يكتمل عند انتهاء جميعها.

final results = await Future.wait([a(), b(), c()]);

تبقى النتائج بالترتيب

تمنحك Future.wait list of results بالترتيب نفسه لـ futures المُدخلة، مهما كان ترتيب انتهائها.

final list = await Future.wait([one(), two()]);
print(list[0]); // result of one()

توفير فعلي للوقت

تنتهي ثلاثة futures متوازية، مدة كل منها ثانية واحدة، معًا خلال نحو ثانية واحدة، لأن Future.wait يتيح تداخل فترات الانتظار.

إذا فشل أحدها

افتراضيًا، إذا أبلغ أي future عن خطأ، يكتمل Future.wait بهذا الخطأ فورًا، حتى لو كانت futures الأخرى لا تزال قيد التشغيل.

تابع التنفيذ باستخدام eagerError

مرّر eagerError: false، وسيواصل Future.wait الانتظار حتى تنتهي كل futures قبل الإبلاغ عن أول خطأ واجهه.

await Future.wait(tasks, eagerError: false);

التسابق باستخدام Future.any

هل تحتاج إلى النتيجة الأسرع فقط؟ يكتمل Future.any بمجرد نجاح أول future في القائمة.

final fastest = await Future.any([mirrorA(), mirrorB()]);

إنشاء القائمة

من الأنماط الشائعة تطبيق map على مدخلاتك لإنشاء قائمة من futures، ثم تمريرها مباشرةً إلى Future.wait.

await Future.wait(ids.map(fetchUser));

تزامن لا خيوط متوازية

هذا هو concurrency ضمن isolate واحد: يتناوب event loop أثناء فترات الانتظار. أما العمل المكثف على وحدة المعالجة المركزية، فتلجأ فيه إلى isolates.

متى تستخدم كل خيار؟

استخدم Future.wait عندما تحتاج إلى جميع النتائج، وFuture.any عندما تحتاج فقط إلى أول نتيجة تصل. ⚖️

تحقق سريع

تحقق سريع من تشغيل futures معًا.

مراجعة: Futures المتوازية

تعلمت تداخل العمل غير المتزامن باستخدام Future.wait للحصول على جميع النتائج، واستخدام Future.any للحصول على الأسرع، وفهمت كيفية تعامل الأخطاء. 🏁

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

هل درس «Future.wait والعمل المتوازي» مجاني؟

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

ماذا ستتعلم في «Future.wait والعمل المتوازي»؟

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

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

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

كم من الوقت يستغرق درس «Future.wait والعمل المتوازي»؟

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

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

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

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

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