Avatar
0
tunguyen Beginner
tunguyen Beginner
Reactive programing
Nếu em có 3 API nhưng chỉ có 2 API async, 1 API là sync. Như vậy hàm này là sync đúng k ạ. Vì sao lại vậy ạ
  • Answer
Remain: 5
1 Answer
Avatar
tvd12 Beginner
tvd12 Beginner
Có rất nhiều cách hiểu về async, vậy anh em mình thống nhất async như sau nhé:

  1. Là gọi từ 1 luồng và nhận kết quả ở luồng khác, nghĩa là không làm block luồng hiện tại đang gọi
  2. Không làm gia tăng số lượng thread trong quá trình gọi

Đúng vậy em ạ, chỉ cần 1 hàm sync thì toàn bộ các hàm async khác sẽ phải chờ kết quả của hàm này em ạ, hãy cùng lấy 1 ví dụ, em sẽ gọi 3 APIs cho chức năng Order thế này:

  1. Gọi kafka để push thông tin order sang hệ thống lưu đơn hàng: API này là async, vì nó gọi sang kafka, mọi việc xử lý sẽ do consumer xử lý vậy nó sẽ không làm block cái luồng gọi hiện tại
  2. Gọi sang hệ thống mail để gửi mail thông báo đơn hàng cho user: API này cũng là async, việc gửi mail sẽ do mail server phụ trách, nên cũng không làm block luồng hiện tại
  3. Gọi sang hệ thống thanh toán để trừ tiền: API là sync, vì nó cần phải lấy được số dư sau khi trừ tiền của user, và dựa vào kết quả nó sẽ quyết định rằng đơn hàng sẽ thanh toán thành công hay không để làm các bước tiếp theo. API này sẽ làm block luồng hiện tại

Như vậy dù chỉ có 1 API sync thì nó cũng làm block luồng hiện tại và theo định nghĩa ở trên thì nó là sync

  • 0
  • Reply