يعني إيه
Microtask & Event Queue ?
لو بتتعامل مع Future و async
أكيد قابلت مواقف غريبة في ترتيب التنفيذ…
وفضلت تسأل نفسك
ليه السطر ده اتنفذ قبل ده؟
السبب ببساطة إن Dart عندها نظام اسمه
Event Loop
وده اللي بيقرر يرتب الكود ازاي لما يكون عندك حاجات
Async.
Microtask
دي بتتنفذ قبل أي حاجة تانية
يعني أولوية أعلى من أي
Future
أمثلة للـ Microtask:
scheduleMicrotask()
Future.microtask()
Future.then(...)
يعني لو فيه Microtask واحدة و ملايين Futures… المايكروتاسك هتتنفذ الأول
Event Queue
ده المكان اللي بيتنفذ فيه الـ
async
الطبيعي
زي:
Future(() {})
Timer
input من اليوزر
Network Request
Stream Events
دي بتتنفذ بعد ما الـ Microtasks تخلص بالكامل.
Dart
بترتب التنفيذ دايما كده:
تنفذ الكود العادي Sync
تخلص كل الـ Microtasks
تنفذ Event واحد
وترجع تكمل بنفس الشكل
Post #2442
4.04K

- 🔥 5
- ⚡ 1