شرح صفوف ومحتوى الفقرة
تختلف دالة المتصفح القياسية fetch() عن بعض المكتبات الخارجية في تفصيل جوهري: فهي لا ترفض الوعد تلقائياً عندما يرد الخادم برمز خطأ بروتوكولي مثل 404 Not Found أو 500. فطالما وصلت رؤوس HTTP عبر الشبكة بنجاح، تعتبر fetch() الاتصال مكتملاً، ومحاولة تمرير الرد مباشرة إلى عناصر العرض قد تضع كائن خطأ مكان مصفوفة البيانات.
تحقق دائماً من الخاصية المنطقية response.ok (وتكون true فقط لرموز النجاح بين 200 و299) فور انتهاء الطلب، وارمِ استثناءً واضحاً عبر throw new Error() عند فشلها قبل قراءة response.json().
HTML
const res = await fetch(`/api/courses/${courseId}`);
if (!res.ok) {
throw new Error(`HTTP status ${res.status}`);
}
const item = await res.json();
setCourse(item);