وعود جافا سكريبت: لغز الرفض مقابل الرمي
عند العمل مع وعود جافا سكريبت، غالبًا ما يواجه المطورون معضلة: هل يجب عليهم استخدام الوعود .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 هو الخيار الوحيد القابل للتطبيق.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3