Tôi đã tìm kiếm trên web và tài liệu cho các mô-đun node.js
express
và có vẻ như không có cách nào để gửi dữ liệu theo từng phần. Tôi có một tập tin kết xuất không phải là rất nhanh và tôi muốn gửi một phần của nó trước khi tất cả mọi thứ được trả lại.Gửi dữ liệu theo các phần trong node.js express
Vì vậy, đây là những câu hỏi của tôi:
- Có một phương pháp trên
response
để gửi dữ liệu bằng phần? response.end()
là gì?- Nếu không có cách nào để gửi dữ liệu theo từng phần - lý do cơ bản đằng sau là gì? Tôi sẽ nói rằng nó trông chặn hơn không chặn nếu đó là sự thật. Trình duyệt có thể tải thông tin nhanh hơn nếu dữ liệu được cung cấp trước đó.
mẫu mã đơn giản:
app.get(..) {
renderFile(file, function(data) {
response.send(data);
});
response.end();
)
Đoạn mã này chỉ gửi một đoạn đầu tiên của dữ liệu. Tôi đã kiểm tra - dữ liệu là được cung cấp chính xác và gọi lại được gọi nhiều lần.
Tất nhiên tôi có thể nối thêm dữ liệu vào một biến và sau đó viết response.send(data);
nhưng tôi không thích cách tiếp cận này - đó không phải là cách nó hoạt động.
Xin hãy giải thích trên đường ống và đưa ra một thí dụ. Tôi cảm thấy điều này rất phù hợp với rất nhiều người, vì nó thực sự là một giải pháp tốt hơn trong nhiều trường hợp. –
@NielsAbildgaard Tôi không thể đưa ra ví dụ cụ thể vì mã trong câu hỏi không cung cấp bất kỳ ngữ cảnh nào về dữ liệu đến từ đâu. 'sourceStream.pipe (response)' sẽ thực hiện thủ thuật. – Brad