Hẳn ai đã từng học qua chương trình Ngữ văn phổ thông đều đã từng biết qua bài thơ "Vội vàng" của Xuân Diệu. "Vội vàng" là một bài thơ tiêu biểu của Xuân Diệu, thể hiện sự yêu mến cuộc sống, yêu mến tuổi xuân đến mức cuồng nhiệt của tác giả.
Nếu ví Xuân Diệu là một lập trình viên thì Vội vàng là mã nguồn thể hiện kỹ thuật "bất đồng bộ". Hãy cùng tìm hiểu qua đoạn thơ sau đây nhé:
Tôi sung sướng. Nhưng vội vàng một nửa:
Tôi không chờ nắng hạ mới hoài xuân.
Xuân đang tới, nghĩa là xuân đang qua,
Xuân còn non, nghĩa là xuân sẽ già,
Mà xuân hết, nghĩa là tôi cũng mất.
Xử lý đồng bộ (Synchronous) là gì?
Như chúng ta đã biết quy luật theo mùa là: Xuân (1) → Hạ (2) → Thu (3) → Đông (4). Mùa Xuân kết thúc rồi mới đến mùa Hạ, khi cảm nhận được cái nắng của mùa Hạ thì bản thân chúng ta mới hoài xuân, mới nhớ về mùa Xuân. Đây là dạng xử lý đồng bộ.
Xử lý đồng bộ (Synchronous) là một kỹ thuật xử lý theo tuần tự. Nghĩa là công việc 1 thực hiện xong, công việc 2 sẽ được thực hiện tiếp theo, sau đó đến 3, 4, 5, ... Ở kỹ thuật xử lý này, tác vụ sau sẽ phải đợi tác vụ trước nó phải được thực hiện xong.
Ưu điểm của xử lý đồng bộ là:
- Các tác vụ được xử lý tuần tự, đảm bảo luồng đi tuyến tính của luồng xử lý.
- Đảm bảo được chất lượng của luồng xử lý, ít gặp lỗi hơn.
- Khi gặp lỗi thì truy ra ngay đang ở tác vụ nào để khắc phục.
Nhược điểm của xử lý đồng bộ là:
- Các tác vụ phải chờ lẫn nhau theo trình tự. Có những tác vụ không cần thiết phải chờ nhau, có thể được xử lý song song. Trường hợp này xử lý đồng bộ sẽ gây ra thời gian chờ không cần thiết.
- Người dùng hệ thống phải "chờ", thời gian chờ chứa thời gian dư thừa như trên.
Xử lý bất đồng bộ (Asynchronous) là gì?
Nếu như xử lý đồng bộ gây ra những cái chờ nhau, thì chúng ta hãy như Xuân Diệu, hãy "vội vàng" lên. "Tôi không chờ nắng hạ mới hoài xuân"
Chúng ta hãy nhớ về Xuân (giai đoạn của mùa Hạ - tác vụ 2) ngay khi chúng ta đang tận hưởng mùa Xuân (tác vụ 1).
Kỹ thuật bất đồng bộ (Asynchronous) là kỹ thuật mà trong đó các tác vụ không nhất thiết phải xử lý theo trình tự, các tác vụ có thể xử lý song song cùng nhau.
Ưu điểm của bất đồng bộ
- Giảm thiểu được những thời gian chờ không đáng có.
- Người dùng hệ thống sẽ "happy" hơn vì không phải đợi lâu. Nhưng có thể không happy vì lý do khác 😂
Nhược điểm của bất đồng bộ
- Khi xảy ra lỗi thì quá trình xác định lỗi ở tác vụ nào sẽ khó khăn hơn vì các tác vụ cùng xử lý song song cùng nhau.
- Bất đồng bộ khó áp dụng trong những hệ thống đòi hỏi quy trình tuần tự.
Tìm hiểu về Promise
Quay lại cùng bài thơ Vội vàng, tác giả Xuân Diệu hoài xuân ngay khi đang tận hưởng mùa xuân. Và tất nhiên cái sự hoài niệm này không phải là hoài niệm về cả một mùa Xuân của tác giả. Nó chỉ là sự hoài niệm lúc bắt đầu mùa xuân cho đến tại thời điểm mà tác giả hoài niệm.
Vậy để hoài niệm trọn vẹn mùa xuân thì chúng ta cần phải sống chậm lại, cần theo sự đồng bộ. Kết thúc mùa Xuân rồi thì hãy hoài xuân. Đây có là thể xem là một "lời hứa" với bản thân rằng: "Hãy hoài niệm về mùa Xuân khi mùa Xuân kết thúc như thế ta mới có một cái xuân tròn vẹn trong sự hoài niệm.
Promise được hiểu là "một lời hứa, lời ước hẹn" cho tương lai. Một đối tượng này (XUÂN trong sự hoài xuân) có thể chưa tồn tại ở hiện tại nhưng sẽ xuất hiện trong tương lai. Promise sẽ biến kỹ thuật "bất đồng bộ" nhìn có vẻ như "đồng bộ" hơn.
Như vậy thì code bất đồng bộ sử dụng promise có dạng như sau:
Ở đây, Hoài_Xuân() sẽ là tác vụ 2, đợi đến khi Tận_hưởng_mùa_Xuân() là tác vụ 1 xong xuôi rồi mới thực hiện. Như vậy là ta chúng ta có thể cùng Xuân Diệu hoài niệm một cái mùa Xuân trọn vẹn bằng "lời hứa" đợi Xuân kết thúc.
Đây là bài viết cơ bản về Synchronous, Asynchronous, Promise. Chi tiết hơn sẽ được tác giả đề cập đến ở các bài viết sau.
Chúc các bạn code vui.
Đăng nhận xét