Tôi muốn thêm một số tiện ích quản trị vào một ứng dụng web nhỏ, chẳng hạn như "Cơ sở dữ liệu sao lưu". Người dùng sẽ nhấp vào một nút và phản hồi HTTP sẽ trở lại ngay lập tức, mặc dù quá trình chạy dài có khả năng đã được bắt đầu ở chế độ nền.Hành vi giống như "đẻ trứng" trong node.js
Trong Java, điều này có thể được thực hiện bằng cách sinh ra một chuỗi độc lập, trong Scala bằng cách sử dụng một diễn viên. Nhưng thành ngữ thích hợp trong node.js là gì? (đoạn mã được đánh giá cao)
Tôi đang đọc lại tài liệu, điều này thực sự có vẻ là câu hỏi 101 nút nhưng đó là khá nhiều nơi tôi đang ở trên ... dù sao, để làm rõ đây là kịch bản cơ bản:
function onRequest(request, response) {
doSomething();
response.writeHead(202, headers);
response.end("doing something");
}
function doSomething(){
// long-running operation
}
Tôi muốn phản hồi quay lại ngay lập tức, để lại doSomething() chạy ẩn.
Ok, được cung cấp mô hình một luồng của nút có vẻ không khả thi mà không sinh ra một ChildProcess cấp hệ điều hành khác. Sự hiểu lầm của tôi.
Trong mã của tôi, những gì tôi cần để sao lưu phần lớn là dựa trên I/O, do đó, nút nên xử lý điều đó theo kiểu không đồng bộ tốt đẹp. Những gì tôi nghĩ rằng tôi sẽ làm là thay đổi doSomething để sau response.end, xem cách ứng xử đó.
Tôi tin rằng bạn đã duyệt qua tài liệu. http://nodejs.org/docs/v0.4.7/api/index.html Tôi nghĩ rằng nó phụ thuộc vào bản chất của quá trình của bạn, nhưng hãy xem Quy trình Con. – supertopi
Cảm ơn. Có vẻ như vấn đề của tôi đã bắt nguồn từ một sự hiểu lầm sâu sắc về cách thức hoạt động của nút :) Quá trình con là những gì tôi nghĩ, mặc dù không phải là giải pháp dễ nhất, xem phản hồi của Joe bên dưới. – danja