readable.pipe(writable) nối một Readable vào một Writable, tự động chuyển dữ liệu từ nguồn sang đích theo từng chunk và tự gọi end() khi hết.
Giá trị lớn nhất là nó quản lý backpressure giúp bạn. Backpressure xảy ra khi bên đọc sản xuất nhanh hơn bên ghi tiêu thụ:
- Khi buffer nội bộ của writable đầy,
write()trả vềfalse. pipebắt tín hiệu đó và pause readable, ngừng bơm thêm.- Khi writable xả xong (event
drain),piperesume readable.
Nhờ vòng pause/resume này, xử lý file/HTTP lớn không nuốt hết RAM (không nạp cả file vào bộ nhớ). Nếu tự read rồi write mà bỏ qua giá trị trả về của write, dữ liệu dồn trong buffer và bộ nhớ phình. Bản hiện đại nên dùng stream.pipeline() thay .pipe(): cùng cơ chế backpressure nhưng xử lý lỗi và dọn dẹp resource tốt hơn.