AzLearn

async و await

async and await

مفهوم ~18 دقيقة

async و await

async تجعل الدالة ترجع Promise. وawait ينتظر نتيجة Promise داخل دالة async. هذا يجعل الكود أسهل قراءة من سلاسل then الطويلة. لكن لا تنسَ أن الدالة async لا ترجع القيمة مباشرة؛ ترجع Promise يحتوي القيمة.

اكتب نوع الإرجاع للدوال async المهمة مثل Promise<User>. هذا يوضح العقد ويمنع إرجاع شكل مختلف بدون قصد.

مثال عملي

index.ts

الدالة main ترجع Promise<void> لأنها async ولا ترجع قيمة مفيدة.

استدعاء main بأمان — Safe main() Call

استدعاء main() بدون معالجة هو floating promise. الأخطاء تختفي بصمت. الخيار الصحيح:

// خيار 1 — أوضح في كود التشغيل العلوي
main().catch(console.error);

// خيار 2 — للتوضيح أن القيمة المرجعة مهملة عمداً
void main();

لا تكتب main(); مجردة إلا في أمثلة تعليمية مبسطة.

معالجة الأخطاء

استخدم try/catch عندما تتوقع فشل عملية خارجية. لكن لا تبتلع الخطأ بصمت. اطبع أو أعد نتيجة فشل واضحة.

تحدي — Challenge