Axios: الصيد لا يعيد الخطأ

تم إنشاؤها على ٢ مارس ٢٠١٦  ·  3تعليقات  ·  مصدر: axios/axios

لماذا يقوم catch بإرجاع كائن وليس كائن خطأ؟

التعليق الأكثر فائدة

هذه هي الطريقة التي يتم بها ذلك مع Angular's $ http ، والذي تستند إليه هذه المكتبة. إنها بشكل أو بآخر قطعة أثرية وليست بالضرورة الطريقة الصحيحة للقيام بالأشياء. أرغب في الانتقال إلى مسار خطأ أكثر اتساقًا حيث يتم استخدام Error الذي يحتوي على تفاصيل استجابة مرفقة إذا كان ذلك مناسبًا.

function createError(message, details) {
  var err = new Error(message);

  Object.keys(details, function (key) {
    err[key] = details[key];
  });

  return err;
}

createError('timeout of ' + config.timeout + 'ms exceeded', {
  code: 'ECONNABORTED',
  config: config
});

أود أيضًا تغيير lib لرفض Promise عند حدوث خطأ فعلي ، بغض النظر عن رمز حالة HTTP. بينما الآن يتم رفض أي شيء خارج النطاق 200-300.

ال 3 كومينتر

هذه هي الطريقة التي يتم بها ذلك مع Angular's $ http ، والذي تستند إليه هذه المكتبة. إنها بشكل أو بآخر قطعة أثرية وليست بالضرورة الطريقة الصحيحة للقيام بالأشياء. أرغب في الانتقال إلى مسار خطأ أكثر اتساقًا حيث يتم استخدام Error الذي يحتوي على تفاصيل استجابة مرفقة إذا كان ذلك مناسبًا.

function createError(message, details) {
  var err = new Error(message);

  Object.keys(details, function (key) {
    err[key] = details[key];
  });

  return err;
}

createError('timeout of ' + config.timeout + 'ms exceeded', {
  code: 'ECONNABORTED',
  config: config
});

أود أيضًا تغيير lib لرفض Promise عند حدوث خطأ فعلي ، بغض النظر عن رمز حالة HTTP. بينما الآن يتم رفض أي شيء خارج النطاق 200-300.

تضمين التغريدة
يمكنك أيضًا التفكير في استخدام علامة التكوين لتحديد الإجراء الذي يجب اتخاذه عند إرجاع استجابة غير 2xx / 3xx.

يستخدم request-promise lib الخيار / العلم simple لهذا الغرض. عندما يكون simple هو true ، يتم رفض طلب الوعد على أخطاء خارج الشبكة (2xx ، 3xx). عندما تكون العلامة خاطئة ، فإنها لا ترفض أي شيء وتصبح مسؤولية المستخدم. لقد وجدت أن هذا مفيد جدًا ولديه تطبيقات تستخدم كلا الإعدادين. أعتقد أنه عادةً ما يكون لدي تعيين بسيط على true لأنه بشكل عام IMO افتراضي أفضل.

https://github.com/request/request-promise#get -a-rejection-only-if-the-request-failed-for-Technical-reason

إغلاق كنسخة مكررة من رقم 24

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات