Promises

Giới thiệu Promise
Promise là một object đại diện cho thao tác bất đồng bộ sẽ trả về thành công hoặc thất bại. Các thao tác của chương trình Javascript được chia ra là nhanh (đồng bộ - synchronous) và chậm (bất đồng bộ - asynchronous).
Hàm then(), catch()
Hàm then() có thể nhận một tham số hoặc hai tham số. Tham số thứ hai là hàm sẽ chạy khi promise nhận trạng thái thất bại. Trạng thái thất bại khi hàm reject() được gọi hoặc một ngoại lệ (Exception) được ném ra.
Promise.all()
Bài này giới thiệu các hàm static của Promise bao gồm: Promise.resolve(), Promise.reject(), Promise.all() và Promise.race().
Async/await
Từ phiên bản ES2017, Javascript đã thêm hai từ khóa async và await. Đây là các cú pháp thay thế cho cú pháp cũ là constructor Promise(), hàm then(), catch(), còn bản chất Promise vẫn giữ nguyên.
Vòng lặp và promise
Chúng ta sẽ sử dụng với promise bao gồm vòng lặp for, forEach và map. Trong ví dụ sau chúng ta sẽ tính tổng giá các loại trái cây. Đầu tiên là cài đặt các hàm sleep(), danh sách trái cây và lấy giá một trái cây sẽ mất một khoảng thời gian (trả về Promise).
Vòng lặp và callback
Ở bài này sẽ không giới thiệu Promise, nhưng có giải thích kỹ hơn về hàm bất đồng bộ, cùng với scope của biến. Khi sử dụng vòng lặp và callback lấy giá trị từ vòng lặp thì nên sử dụng cẩn thận.