التعامل مع الأخطاء غير المتزامنة مع تسلسل الوعد
عند العمل مع التعليمات البرمجية غير المتزامنة، من الضروري التفكير في كيفية التعامل مع الأخطاء بشكل فعال. يمكن أن تؤدي الاستثناءات التي لم يتم اكتشافها إلى تعطل تطبيقك، لذلك من المهم أن يكون لديك استراتيجية جاهزة.
في السيناريو الموصوف، يتم إنشاء وعد باستخدام setTimeout الذي يلقي خطأ. لن يلتقط معالج الالتقاط الخاص بـ Bluebird Promise هذا الخطأ لأنه يحدث ضمن رد اتصال غير متزامن.
معالجة الاستثناءات داخل الوعود
ومع ذلك، يمكن للوعود التقاط الاستثناءات التي يتم طرحها داخل وظائف رد الاتصال الخاصة بهم. للتعامل مع هذا النوع من الأخطاء، يمكنك:
function getPromise() {
return new Promise(function(done, reject) {
setTimeout(done, 500);
}).then(function() {
console.log("hihihihi");
throw new Error("Oh no!");
});
}
هنا، يتم طرح الخطأ ضمن رد الاتصال ثم، مما يضمن أنه سيتم اكتشافه بواسطة معالج الالتقاط الخاص بـ Promise.
تحذيرات مع عمليات الاسترجاعات غير المتزامنة
من المهم أن تتذكر أن الوعود لا تلتقط استثناءات من عمليات الاسترجاعات غير المتزامنة التي لا تقع ضمن نطاق اختصاصها. للتعامل مع هذه الأنواع من الأخطاء، ضع في اعتبارك ما يلي:
مثال للتعامل مع عمليات رد الاتصال غير المتزامنة المارقة
للتعامل مع عمليات رد الاتصال غير المتزامنة المارقة في Node.js أو المتصفح، يمكنك استخدام الطريقة التالية:
function getPromise() {
return new Promise(function(done, reject) {
setTimeout(function() {
try {
// Your rogue async callback here
console.log("hihihihi");
} catch (e) {
reject(e);
}
}, 500);
});
}
من خلال التعامل يدويًا مع أي استثناءات ضمن رد الاتصال، يضمن هذا الأسلوب أنها لن تؤدي إلى تعطل تطبيقك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3