Axios: Tangkapan tidak mengembalikan Kesalahan

Dibuat pada 2 Mar 2016  ·  3Komentar  ·  Sumber: axios/axios

Mengapa catch mengembalikan objek dan bukan objek kesalahan?

Komentar yang paling membantu

Ini adalah bagaimana hal itu dilakukan dengan $http Angular, yang menjadi dasar perpustakaan ini. Kurang lebih itu adalah artefak dan belum tentu cara yang tepat untuk melakukan sesuatu. Saya ingin pindah ke jalur kesalahan yang lebih konsisten di mana Error digunakan yang memiliki detail respons terlampir jika relevan.

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
});

Saya juga ingin mengubah lib untuk hanya menolak Promise ketika kesalahan aktual terjadi, terlepas dari kode status HTTP. Padahal sekarang apa pun di luar kisaran 200-300 ditolak.

Semua 3 komentar

Ini adalah bagaimana hal itu dilakukan dengan $http Angular, yang menjadi dasar perpustakaan ini. Kurang lebih itu adalah artefak dan belum tentu cara yang tepat untuk melakukan sesuatu. Saya ingin pindah ke jalur kesalahan yang lebih konsisten di mana Error digunakan yang memiliki detail respons terlampir jika relevan.

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
});

Saya juga ingin mengubah lib untuk hanya menolak Promise ketika kesalahan aktual terjadi, terlepas dari kode status HTTP. Padahal sekarang apa pun di luar kisaran 200-300 ditolak.

@mzabriskie
Anda juga dapat mempertimbangkan penggunaan flag config untuk menentukan tindakan apa yang harus diambil ketika respons non 2xx/3xx dikembalikan.

request-promise lib menggunakan flag/opsi simple untuk ini. Ketika simple adalah true , request-promise ditolak pada kesalahan non-jaringan (2xx, 3xx). Ketika bendera salah, itu tidak menolak apa pun dan menjadi tanggung jawab pengguna. Saya menemukan ini sangat berguna dan memiliki aplikasi yang menggunakan kedua pengaturan. Saya pikir saya biasanya memiliki set sederhana ke true karena umumnya merupakan IMO default yang lebih baik.

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

Penutupan sebagai duplikat #24

Apakah halaman ini membantu?
0 / 5 - 0 peringkat