Các tình huống ngoại lệ trong Promise trong JavaScript
Bây giờ hãy cùng học cách xử lý các tình huống ngoại lệ xảy ra bên trong một promise. Trong trường hợp phát sinh tình huống như vậy, chúng ta phải từ chối promise bằng một hàm từ chối đặc biệt, hàm này tự động được truyền vào tham số thứ hai của hàm promise:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Bên trong hàm promise, chúng ta phải gọi
resolve nếu mọi thứ diễn ra bình thường, hoặc
reject nếu phát sinh tình huống
ngoại lệ:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // dữ liệu của promise
} else {
reject('error in promise'); // văn bản lỗi của bạn
}
}, 3000);
});
Sau đó, trong phương thức then, bạn phải
truyền không phải một, mà là hai hàm làm tham số:
hàm đầu tiên sẽ hoạt động nếu promise hoạt động bình thường (được resolve),
còn hàm thứ hai - nếu hoạt động với lỗi (bị reject):
promise.then(
function(result) {
console.log(result); // in ra kết quả của promise
},
function(error) {
console.log(error); // in ra văn bản lỗi
}
);
Thông thường, đoạn mã trên được viết ngắn gọn hơn, như thế này:
promise.then(function(result) {
console.log(result); // in ra kết quả của promise
}, function(error) {
console.log(error); // in ra văn bản lỗi
});
Hãy tạo mã bất đồng bộ, mã này sẽ tạo ra
các số ngẫu nhiên từ 0 đến 5.
Bao bọc tất cả điều này trong một promise.
Hãy để promise trả về kết quả
là kết quả của phép chia một cho số đã tạo.
Hãy để promise thực thi với lỗi,
nếu xảy ra phép chia cho không, và thành công
trong tất cả các trường hợp khác.