Bất đồng bộ và await
Bài học 9 trên 9 trong khóa học Những phần khó trong JavaScript hiện đại (ES6+) của Coddy.
Nếu bạn đã hoàn thành bài học trước, hẳn bạn đang nghĩ rằng promise khó hiểu hoặc thậm chí khó nhớ cú pháp của nó!
Đừng lo! ES6 sẽ giúp bạn giải quyết vấn đề này.
<i>async</i>và<i>await</i>giúp viết promise dễ dàng hơn
Hãy xem xét một hàm thực hiện một tác vụ bất đồng bộ (tốn thời gian).
Chúng ta muốn hàm này trả về promise và cũng chờ kết quả của promise.
Nếu viết
asynctrước một hàm JavaScript bất kỳ, hàm đó luôn trả về promise.
awaitsẽ khiến hàm chờ một promise và tạm dừng thực thi cho đến khi promise được giải quyết.
Hãy xem xét ví dụ lấy dữ liệu từ máy chủ, quá trình này có thể mất vài giây.
async function fetchData () {
const response = await fetch("/url"); // Chờ promise hoàn thành
const movies = await response.json(); // Chờ promise hoàn thành
return movies;
}
fetchData.then(val => console.log(val)) // Dữ liệu trả về từ APITừ khóa
awaitchỉ có thể dùng bên trong một hàmasync.
Có thể dùng async-await trong cả hàm thông thường lẫn hàm mũi tên.
const someFunc = async (a) => { await //code }Thử thách
Trung bìnhBạn được cho một hàm foo, hàm này nhận một số nguyên n và trả về một promise.
Hãy viết một hàm sum nhận hai promise làm đầu vào và trả về tổng các kết quả đã được giải quyết của chúng.
Hàm cần được đánh dấu bằng async!
Tự làm thử
const foo = async (x) => {
return x
}
// Viết code của bạn bên dướiTấ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