Situasi Pengecualian dalam Janji (Promise) di JavaScript
Sekarang mari kita belajar mengendalikan situasi pengecualian yang berlaku di dalam janji. Sekiranya berlaku situasi sedemikian, kita harus menolak janji tersebut menggunakan fungsi penolakan khas, yang secara automatik dimasukkan ke dalam parameter kedua fungsi janji:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Di dalam fungsi janji, kita harus memanggil
resolve jika semuanya berjalan normal, atau
reject jika berlaku situasi pengecualian:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // data janji
} else {
reject('error in promise'); // teks ralat anda
}
}, 3000);
});
Kemudian, dalam kaedah then, anda harus
menyampaikan bukan satu, tetapi dua fungsi sebagai parameter:
fungsi pertama akan berfungsi
jika janji berjaya dilaksanakan (resolved),
manakala fungsi kedua - jika berlaku ralat (rejected):
promise.then(
function(result) {
console.log(result); // akan memaparkan hasil janji
},
function(error) {
console.log(error); // akan memaparkan teks ralat
}
);
Biasanya, kod di atas ditulis dengan lebih ringkas, seperti ini:
promise.then(function(result) {
console.log(result); // akan memaparkan hasil janji
}, function(error) {
console.log(error); // akan memaparkan teks ralat
});
Buat kod tak segerak yang akan menjana
nombor rawak dari 0 hingga 5.
Bungkuskan semuanya ini dalam janji. Biarkan janji tersebut dengan hasilnya
mengembalikan hasil pembahagian satu dengan nombor yang dijana.
Biarkan janji tersebut dilaksanakan dengan ralat,
jika berlaku pembahagian dengan sifar, dan dengan kejayaan
dalam semua kes lain.