Menu
CoddyTech

Promise

Bài học 8 trên 9 trong khóa học Những phần khó trong JavaScript hiện đại (ES6+) của Coddy.

Đôi khi chúng ta cần thực hiện một số tác vụ, có thể mất thời gian để hoàn thành. 

Không thể viết code như vậy theo cách đồng bộ thông thường, vì thế chúng được gọi là tác vụ bất đồng bộ, hay đơn giản là tác vụ async.

Promise là các đối tượng JavaScript đảm bảo tác vụ async hoàn thành và trả về kết quả, có thể là thành công hoặc thất bại!

Một promise có ba trạng thái: 1. Đang chờ (trạng thái ban đầu) 2. Đã hoàn thành (trả về kết quả) 3. Bị từ chối (trả về lỗi)

let myPromise = new Promise(function(resolve, reject) {

  resolve("Everything is fine"); // callback này chạy khi tác vụ thành công
  reject("Error");  // callback này chạy khi tác vụ thất bại
  
});

// Hoặc dùng hàm mũi tên
let myPromise2 = new Promise((resolve, reject) => {//code});

Ở đây, myPromise là một đối tượng promise. Callback resolve được gọi nếu promise hoàn thành, còn reject được gọi nếu promise bị từ chối.

myPromise.then( value => console.log(value)) // Mọi thứ đều ổn
		 .catch( error => console.log(error)) // Lỗi		

Để truy cập giá trị kết quả nếu promise thành công, bạn có thể dùng .then( value => // your code ). Nếu promise bị từ chối, bạn có thể dùng .catch( value => // your code ).

Promise thường được dùng trong các tác vụ async, chẳng hạn như khi gọi API ở backend (front-end), gửi yêu cầu đến cơ sở dữ liệu (backend), v.v.

challenge icon

Thử thách

Trung bình

Viết một hàm getPromise trả về một promise, promise này sẽ giải quyết thành chính chuỗi đó hoặc từ chối với chuỗi "Rejected" nếu chuỗi đầu vào là "Coddy"

Tự làm thử

function getPromise(s) {
  // Viết code tại đây
}

Tất cả bài học trong Những phần khó trong JavaScript hiện đại (ES6+)

Tự luyện tập: Trình biên dịch JavaScript online