2012-10-08 37 views
9

Tôi đang sử dụng Node.js để lặp qua những gì cuối cùng có thể là một dải khá lớn bài đăng.Vòng lặp dài trong Node.js: Sử dụng bộ hẹn giờ?

Nếu tôi đang làm điều gì đó tương tự bằng cách sử dụng phía máy khách JavaScript, tôi sẽ sử dụng bộ hẹn giờ as explained here để không chặn chuỗi.

Câu hỏi của tôi là: "Vẫn là một máy chủ thực hành âm thanh?" hoặc "Tôi có nên tiếp cận vấn đề khác không?"

+0

Nó có thể có khả năng tồi tệ hơn trên máy chủ vì nó có thể chặn tất cả mọi người, không chỉ một người dùng. –

Trả lời

14

Cách thích hợp để thực hiện điều đó trong node.js là chia nhỏ công việc của bạn thành các đoạn và sử dụng process.nextTick để xếp hàng đoạn tiếp theo khi đoạn hiện tại đã hoàn thành. Bằng cách đó bạn cho phép các cuộc gọi lại xếp hàng khác được thực hiện giữa mỗi đoạn công việc.

CẬP NHẬT: như của Node.js 0.10, setImmediate nên thường được sử dụng thay process.nextTick cho mục đích này như setImmediate sản lượng để vòng lặp sự kiện để đảm bảo I/O không được bỏ đói, nhưng process.nextTick không.

1

Đề xuất của JohnnyHK hợp lệ. Tôi sẽ xem xét công nhân web khi nhiệm vụ có thể được hoàn thành sau này (ví dụ: Thêm vào hàng đợi).

-2

Hãy xem thư viện async. Nó cung cấp phiên bản async của các phương thức thu thập thông thường (bản đồ, bộ lọc, mỗi ...). AFAIK, xử lý mảng của bạn một cách không đồng bộ sẽ không chặn các quy trình và người dùng khác.

Các vấn đề liên quan