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

  1. function resolveAfter1Seconds() {
  2. return new Promise((resolve) => {
  3. setTimeout(() => {
  4. resolve('resolved')
  5. }, 1000)
  6. })
  7. }
  8.  
  9. function resolveAfter2Seconds() {
  10. return new Promise((resolve) => {
  11. setTimeout(() => {
  12. resolve('resolved')
  13. }, 2000)
  14. })
  15. }
  16.  
  17. function resolveAfter3Seconds() {
  18. return new Promise((resolve) => {
  19. setTimeout(() => {
  20. resolve('resolved')
  21. }, 3000)
  22. })
  23. }
  24.  
  25. function resolveAfter4Seconds() {
  26. return new Promise((resolve) => {
  27. setTimeout(() => {
  28. resolve('resolved')
  29. }, 4000)
  30. })
  31. }
  32.  
  33. async function asyncFunction() {
  34. console.log('start')
  35.  
  36. const result = await Promise.all([
  37. resolveAfter1Seconds(),
  38. resolveAfter2Seconds(),
  39. resolveAfter3Seconds(),
  40. resolveAfter4Seconds(),
  41. ])
  42.  
  43. console.log(result) //resolved after 4 seconds !
  44. console.log('end')
  45. }
  46.  
  47. 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

Leave a Reply

You must be logged in to post a comment.