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.
Thử thách
Trung bìnhViế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+)
2Bắt đầu khám phá
Phạm vi khối lệnh, let và constHàm mũi tênSpread và restVòng lặp for...ofLớpPromiseBất đồng bộ và awaitTự luyện tập: Trình biên dịch JavaScript online