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:

javascriptlet 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ệ:

javascriptlet 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):

javascriptpromise.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:

javascriptpromise.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
});
Задание 1

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.