Tôi mới sử dụng Node và cố gắng đảm bảo rằng tôi đang sử dụng thiết kế sane cho ứng dụng web có định dạng JSON.Mẫu tốt nhất để xử lý vòng lặp không đồng bộ trong Node.js
Tôi đã có một loạt dữ liệu được lưu trữ trong Redis và đang truy xuất dữ liệu qua nút, truyền trực tuyến kết quả khi chúng đến từ Redis. Dưới đây là một ví dụ tốt về những gì tôi đang làm:
app.get("/facility", function(req, res) {
rc.keys("FACILITY*", function(err, replies) {
res.write("[");
replies.forEach(function (reply, i) {
rc.get(reply, function(err, reply) {
res.write(reply);
if (i == replies.length-1) {
res.write("]");
res.end();
}
else
res.write(",");
});
});
});
});
Về cơ bản tôi nhận được một tập hợp các phím từ Redis và sau đó yêu cầu mỗi người, streaming ra kết quả vào bán bằng tay tạo ra JSON (sợi dây ra khỏi Redis đã có trong JSON). Bây giờ điều này làm việc độc đáo, nhưng tôi không thể không nghĩ rằng i == reply.length-1 là một chút lộn xộn?
Tôi có thể làm tất cả điều này với mget trong Redis, nhưng đó không thực sự là điểm tôi đang cố gắng để có được nó; đó là cách tốt nhất để xử lý vòng lặp async với forEach, phát trực tuyến đầu ra và kết thúc một cách duyên dáng khỏi kết nối với res.end với vòng lặp được thực hiện.
Đây có phải là cách tốt nhất hoặc có mẫu trang nhã hơn tôi có thể theo dõi không?
đối với vùng sâu callbacks hàm lồng nhau tôi sẽ sử dụng async thư viện .js. – BRampersad