البرمجة غير المتزامنة ⏳
JavaScript أحادية الخيط لكنها تدعم العمليات غير المتزامنة عبر Callbacks, Promises, و Async/Await.
لماذا Async مهم؟
- طلبات الشبكة (API calls)
- قراءة الملفات
- انتظار أحداث المستخدم
- أي عملية تستغرق وقتاً
JavaScript أحادية الخيط لكنها تدعم العمليات غير المتزامنة عبر Callbacks, Promises, و Async/Await.
// اضغط ▶ تشغيل لرؤية النتائج...
اكتب دالة retry(fn, times) تعيد محاولة تنفيذ Promise عدة مرات قبل الفشل النهائي.
async function retry(fn, times = 3) {
for (let i = 1; i <= times; i++) {
try {
const result = await fn();
console.log(`✅ نجح في المحاولة ${i}`);
return result;
} catch (e) {
console.log(`❌ فشل المحاولة ${i}: ${e}`);
if (i === times) throw e;
}
}
}
let attempt = 0;
const unstable = () => new Promise((res, rej) => {
attempt++;
attempt >= 3 ? res("بيانات!") : rej("خطأ شبكة");
});
retry(unstable, 5).then(d => console.log("النتيجة:", d));