تكرار السؤال: …
الإجابة المختصرة
بإرسال عدة طلبات متزامنة في نفس اللحظة عبر Promise.all ومحاولة تنفيذ عمليات متعارضة (مثل حجز نفس المقعد أو سحب رصيد مرتين) والتأكد من نجاح عملية واحدة فقط.
الشرح
ظروف التسابق لا تظهر في الاختبارات المتسلسلة العادية. لاختبار قفل قاعدة البيانات أو المعاملات الموزعة، تطلق حزمة من الطلبات المتزامنة عبر Promise.all تجاه نفس المورد وتتحقق من أن واحداً فقط نجح برمز 200 بينما فشلت باقي الطلبات بتعارض 409 Conflict أو 422، وأن الرصيد النهائي متسق ودقيق.
مثال بالكود
const results = await Promise.all([
withdraw(userId, 100),
withdraw(userId, 100)
]);أخطاء شائعة
- تنفيذ العمليات المتزامنة في حلقة for عادية مما يجعلها تنفذ متسلسلة وتفشل في كشف ظروف التسابق.