Mengapa catch mengembalikan objek dan bukan objek kesalahan?
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
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.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.