Async/Await Javascript
Async/Await Javascript là một tính năng của JavaScript giúp chúng ta làm việc với các hàm bất đồng bộ.
Async – khai báo một hàm bất đồng bộ (async function someName(){…}).
- Tự động biến đổi một hàm thông thường thành một Promise.
- Khi gọi tới hàm async nó sẽ xử lý mọi thứ và được trả về kết quả trong hàm của nó.
- Async cho phép sử dụng Await.
Await – tạm dừng việc thực hiện các hàm async. (Var result = await someAsyncCall ().
- Khi được đặt trước một Promise, nó sẽ đợi cho đến khi Promise kết thúc và trả về kết quả.
- Await chỉ làm việc với Promises, nó không hoạt động với callbacks.
- Await chỉ có thể được sử dụng bên trong các function async.
Ta xét ví dụ sau
- function resolveAfter1Seconds() {
- return new Promise((resolve) => {
- setTimeout(() => {
- resolve('resolved')
- }, 1000)
- })
- }
-
- function resolveAfter2Seconds() {
- return new Promise((resolve) => {
- setTimeout(() => {
- resolve('resolved')
- }, 2000)
- })
- }
-
- function resolveAfter3Seconds() {
- return new Promise((resolve) => {
- setTimeout(() => {
- resolve('resolved')
- }, 3000)
- })
- }
-
- function resolveAfter4Seconds() {
- return new Promise((resolve) => {
- setTimeout(() => {
- resolve('resolved')
- }, 4000)
- })
- }
-
- async function asyncFunction() {
- console.log('start')
-
- const result = await Promise.all([
- resolveAfter1Seconds(),
- resolveAfter2Seconds(),
- resolveAfter3Seconds(),
- resolveAfter4Seconds(),
- ])
-
- console.log(result) //resolved after 4 seconds !
- console.log('end')
- }
-
- asyncFunction()
Ở ví dụ trên ta đã nhóm tất cả các function bất đồng bộ vào trong các Promise sau đó có 1 hàm async/await chung gọi tới Promise.all
để thực thi tất cả các công việc của các Promise ta tạo ra