Nonblocking I/O trong Node
Cái này nghĩa là gì trong bối cảnh lập trình phía máy chủ? Tình huống là tương tự: các yêu cầu I/O như
truy cập mạng và ổ cứng cũng là chậm so sánh, nên chúng ta không muốn runtime phong toả business logic
khỏi thực thi trong khi đọc các files hay gửi các thông điệp trên mạng. Để giải quyết cái này, Node sử
dụng 3 kĩ thuật: các sự kiện, các APIs không đồng bộ, và nonblocking I/O. Nonblocking I/O là một thuật
ngữ mức thấp từ phương diện một lập trình viên Node. Nó có nghĩa chương trình của bạn có thể thực hiện
một yêu cầu cho một tài nguyên mạng trong khi làm thứ gì khác, và sau đó, khi hoạt động mạng đã hoàn thành,
một callback sẽ chạy để xử lí kết quả.
Ảnh dưới thể hiện một ứng dụng web Node điển hình cái sử dụng thư viện ứng dụng web Express để xử lí order
flow cho một shop. Các trình duyệt thực hiện các yêu cầu để buy một product, và sau đó ứng dụng kiểm tra
stock inventory hiện tại, tạo một account cho user, email receipts, và gửi quay trở lại một trả lời JSON
HTTP. Đồng thời, các thứ khác cũng xảy ra: một email receipt được gửi, và một CSDL được cập nhật với các chi
tiết và order của người dùng. Code bản thân nó là theo đường thẳng, Javascript lệnh, nhưng runtime có hành vi
đồng thời vì nó sử dụng nonblocking I/O.