"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > متى يجب استخدام Promise.reject مقابل رمي وعود JavaScript؟

متى يجب استخدام Promise.reject مقابل رمي وعود JavaScript؟

تم النشر بتاريخ 2024-11-08
تصفح:986

When to Use Promise.reject vs. Throw in JavaScript Promises?

وعود جافا سكريبت: لغز الرفض مقابل الرمي

عند العمل مع وعود جافا سكريبت، غالبًا ما يواجه المطورون معضلة: هل يجب عليهم استخدام الوعود .reject أو ببساطة رمي خطأ؟ في حين أن كلتا الطريقتين تخدمان غرضًا مشابهًا، إلا أن الارتباك ما زال قائمًا فيما يتعلق بالاختلافات والمزايا المحتملة بينهما.

استكشاف أوجه التشابه

في النهاية، لا توجد ميزة متأصلة في استخدام Promise.reject. على رمي خطأ أو العكس. تقوم كلتا الآليتين بتعيين الوعد على الحالة المرفوضة وتشغيل معالج .catch أو Catch().

الكشف عن تمييز دقيق

ومع ذلك، هناك حالة محددة يوجد حيث يكون إلقاء الخطأ قصيرًا: عمليات الاسترجاعات غير المتزامنة خارج عمليات الاسترجاعات الوعدية. في هذه المواقف، يكون Promise.reject هو الخيار الوحيد لجعل الحالة المرفوضة معروفة لسلسلة الوعد.

خذ بعين الاعتبار المثال التالي:

new Promise(function() { setTimeout(وظيفة() { رمي "أو ناه"؛ // لن ينجح استخدام Promise.reject('or nah') أيضًا في هذه الحالة }, 1000); }).catch(وظيفة(ه) { console.log(e); // لا يحدث });
new Promise(function() {
  setTimeout(function() {
    throw 'or nah';
    // Using Promise.reject('or nah') also won't work in this case
  }, 1000);
}).catch(function(e) {
  console.log(e); // doesn't happen
});

اختيار أفضل الممارسات

بشكل عام، إما Promise.reject أو الرمي. يمكن استخدام خطأ لتعيين وعد للحالة المرفوضة. ومع ذلك، عند العمل مع عمليات رد الاتصال غير المتزامنة خارج عمليات رد الاتصال الوعدية، يصبح Promise.reject هو الخيار الوحيد القابل للتطبيق.

بيان الافراج أعيد طبع هذه المقالة على: 1729683993 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3