top of page

Nên sử dụng Promises hay Async-Await trong Javascript?

Có nhiều bài viết tuyên bố rằng việc sử dụng async- await tốt hơn là sử dụng promises. Điều này có lẽ đúng trong các trường hợp chung, nhưng nếu khái quát hóa một cách rộng hơn thì không công bằng cho cả async- awaitpromises. Đối với các bạn mới sử dụng JavaScript, việc hiểu ý nghĩa và lựa chọn sử dụng chúng là một thách thức không hề nhỏ. Vì vậy, trước khi tìm hiểu về async- await hoặc quyết định sử dụng phương pháp nào, hãy đảm bảo rằng bạn hiểu rõ về promisesasync- await. Trong bài viết này tôi sẽ chia sẻ những điều mà tôi đã học và cách quyết định khi nào nên sử dụng chúng.

Promises và Async-Await trong Javascript

Đoạn mã ví dụ về promisesasync- await

Đoạn mã ví dụ về promises và async- await

Dưới đây là những nguyên tắc hãy cùng nhau tìm hiểu nhé!

Quy tắc cho việc sử dụng Promises

Mô hình nguyên tắc sử dụng promises

( Mô hình nguyên tắc sử dụng promises)

  1. Sử dụng promises bất cứ khi nào sử dụng mã chặn hoặc mã không đồng bộ.

  2. Bản đồ resolve đến then và bản đồ reject đến catch cho tất cả mục đích thiết thực.

  3. Đảm bảo viết cả hai phương pháp .then.catch cho tất cả promises.

  4. Nếu một vài thứ cần hoàn thành trong cả hai trường hợp thì sử dụng .finally.

  5. Chúng ta chỉ nhập một mã đột biến cho mỗi promise.

  6. Chúng ta có thể thêm đa dạng xử lý vào một promise đơn.

  7. Kiểu trả về của tất cả các phương thức trong đối tượng Promise, bất kể chúng là phương thức tĩnh hay phương thức nguyên mẫu, lại là một promise.

  8. Trong promise.all, thứ tự của các promise được duy trì trong biến giá trị, bất kể promise nào được giải quyết trước tiên.

Khi bạn thực hiện promises, hãy kiểm tra async- await. Nó sẽ giúp bạn viết mã dễ đọc hơn. Khi nó không được sử dụng đúng cách, nó có nhược điểm.

Quy tắc cho Async- await

Dưới đây là danh sách những quy tắc đúng đắn khi sử dụng async và await

  1. Những hàm async trả về một promise.

  2. Hàm async sử dụng promise ngầm để trả kết quả. Thậm chí nếu bạn không trả lại một promise ngầm, hàm async vẫn đảm bảo mã của bạn được truyền thông qua promise.

  3. await chặn thực thi trong hàm async, trong đó lệnh await là một phần.

  4. Có thể có nhiều lệnh await trong một hàm async.

  5. Khi sử dụng async- await, đảm bảo rằng bạn sử dụng try catch cho xử lý lỗi.

  6. Thật cẩn thận khi sử dụng await trong vòng lặp. Bạn có thể rơi vào cái bẫy viết mã thực thi tuần tự khi có thể dễ dàng thực hiện song song.

  7. await luôn dùng cho một promise đơn.

  8. Tạo promise bắt đầu chức năng không đồng bộ.

  9. await chỉ chặn thực thi trong hàm async khi giải quyết promise, vì vậy nếu hoạt động không đồng bộ bắt đầu, await sẻ không ảnh hưởng đến quá trình.

Công việc IT hấp dẫn

VẬY NÊN SỬ DỤNG PROMISES HAY ASYNC- AWAIT?

Câu trả lời là sử dụng cả hai.

Dưới đây là những quy tắc sử dụng để quyết định khi sử dụng promises và khi sử dụng async- await:

  1. Hàm async trả về một promise, sự chuyển đổi này luôn đúng. Mỗi hàm trả về một promise có thể được xem xét là hàm async.

  2. await sử dụng cho việc gọi hàm async và chờ nó giải quyết hoặc từ chối.

  3. await chặn thực thi trong hàm async nơi nó định vị.

  4. Nếu kết quả của hàm 2 phụ thuộc vào kết quả của hàm 1, ta sử dụng await.

  5. Nếu hai hàm có thể thực hiện song song, tạo hai hàm async khác nhau và chạy chúng song song.

  6. Để chạy promises song song, tạo một mảng của những promises và sau đó sử dụng promise.all( promisesarray).

  7. Mỗi khi sử dụng await hãy nhớ đó là bạn đang viết mã chặn, theo thời gian chúng ta có xu hướng bỏ bê điều này.

  8. Thay vì tạo hàm async lớn với nhiều awaitasyncfunction() trong nó hãy tạo một hàm async nhỏ hơn. Với cách này bạn sẽ không phải viết nhiều mã chặn.

  9. Lợi ích khác khi tạo một hàm async nhỏ là nó buộc bạn tự suy nghĩ xem hàm async nào có thể chạy song song.

  10. Nếu mã của bạn chứa mã chặn, nó sẽ tốt hơn để thực hiện hàm async. Bằng cách này bạn có thể đảm bảo rằng những người khác có thể sử dụng hàm một cách không đồng bộ.

  11. Bằng cách tạo các chức năng không đồng bộ khỏi mã chặn, bạn đang cho phép người dùng (người sẽ gọi chức năng của bạn) quyết định mức độ không điển hình mà họ muốn.

khi nào nên dùng promises và khi nào dùng async- await.

Những chia sẻ vừa rồi sẽ giúp bạn quyết định đúng đắn hơn khi nào nên dùng promises và khi nào dùng async- await.

Ngoài ra JT1 còn có nhiều bài viết chia sẻ không chỉ về kiến thức mà còn về các kỹ năng mềm cho dân IT mong muốn trở nên chuyên nghiệp hơn trong con đường sự nghiệp của mình, tại: https://www.jt1.vn/

Gợi ý cho bạn:

Nguồn tổng hợp

---

JT1 - IT Recruitment Agency

Email: hi@jt1.vn

Điện thoại: +8428 6675 6685

Xem thêm các bài viết khác tại: https://www.jt1.vn/blog

Theo dõi chúng tôi tại: https://www.facebook.com/jt1asia/

Job_link_banner.gif
bottom of page