Promise được sinh ra là để không phải dùng if lồng quá nhiều
Promise được sinh ra để giải quyết những rắc rối của việc dùng quá nhiều callback. Callback là những hàm được dùng như đối số của hàm khác và đã xác định sẵn đối số truyền vào cho nó rồi
api.getUser('pikalong', function (err, user) {
if (err) throw err
api.getPostsOfUser(user, function (err, posts) {
if (err) throw err
api.getCommentsOfPosts(posts, function (err, comments) {
// vân vân và mây mây...
})
})
})
Ví dụ trên khi được viết lại bằng Promise sẽ là:
api
.getUser('pikalong')
.then((user) => api.getPostsOfUser(user))
.then((posts) => api.getCommentsOfPosts(posts))
.catch((err) => {
throw err
})
await với async là cách để viết hàm bất đồng bộ với tư duy khi viết hàm tuần tự
Sự bất đồng bộ có tính lây lan. Bất kỳ hàm nào gọi hàm bất đồng bộ đều trở thành hàm bất đồng bộ
Tham khảo:: Tất tần tật về Promise và async/await - Ehkoo