JavaScript Đồng bộ và Bất đồng bộ
JavaScript chạy trên một luồng duy nhất. Điều này có nghĩa là nó thực thi từng việc một tại một thời điểm. Bạn cần hiểu cách nó xử lý các tác vụ để viết mã hiệu quả.
JavaScript Đồng bộ
Mã đồng bộ chạy theo từng dòng. Mỗi tác vụ phải chờ tác vụ trước đó hoàn thành. Điều này được gọi là chặn (blocking). Nếu một tác vụ mất nhiều thời gian, toàn bộ chương trình sẽ bị dừng lại.
- Thực thi: Trình tự cố định.
- Chặn: Có.
- Độ phức tạp: Đơn giản.
- Tốt nhất cho: Các tác vụ đơn giản, tuần tự.
JavaScript Bất đồng bộ
Mã bất đồng bộ chạy độc lập. Các tác vụ không chặn các mã khác trong khi chờ đợi. Điều này được gọi là không chặn (non-blocking). Tác vụ bắt đầu chạy ngầm và sẽ thông báo cho bạn khi nó hoàn thành.
- Thực thi: Các tác vụ chạy độc lập.
- Chặn: Không.
- Độ phức tạp: Cao hơn.
- Tốt nhất cho: Các lệnh gọi API, bộ hẹn giờ (timers) và các thao tác với tệp.
Ba cách để xử lý các tác vụ bất đồng bộ:
- Callbacks: Một hàm chạy sau khi một tác vụ hoàn thành.
- Promises: Một đối tượng đại diện cho việc hoàn thành hoặc thất bại của một hoạt động.
- Async/Await: Phương pháp sạch sẽ nhất. Nó làm cho mã bất đồng bộ trông giống như mã đồng bộ mà không làm chặn luồng.
Các hoạt động bất đồng bộ phổ biến:
- Bộ hẹn giờ: setTimeout()
- Gọi API: fetch()
- Đọc tệp: readFile()
- Sự kiện người dùng: addEventListener()
Event Loop giúp điều này hoạt động. Nó sử dụng Call Stack, Web APIs và Callback Queue để quản lý nhiều tác vụ cùng một lúc.
Tóm tắt:
- Đồng bộ: Lần lượt từng cái một. Chặn việc thực thi.
- Bất đồng bộ: Các tác vụ độc lập. Không chặn.
- Mặc định của JavaScript: Đồng bộ.
Nguồn: https://www.geeksforgeeks.org/javascript/synchronous-and-asynchronous-in-javascript/ Nguồn: https://www.w3schools.com/js/js_asynchronous.asp Nguồn: https://medium.com/@mohdtalib.dev/what-is-synchronous-and-asynchronous-in-javascript-07adb7b4cc5f
Bài viết đầy đủ: https://dev.to/raja_b_0c9d242e2c26cf063b/javascript-synchronous-and-asynchronous-2a69