Tôi có một ứng dụng nút là không một ứng dụng web - nó hoàn thành một loạt các tác vụ không đồng bộ trước khi trở về 1. Ngay trước khi trở về, kết quả của chương trình được in trên bảng điều khiển.Cách viết một hàm node.js chờ một sự kiện kích hoạt trước khi trở về?
Làm cách nào để đảm bảo tất cả công việc không đồng bộ được hoàn tất trước khi trở về? Tôi đã có thể đạt được một cái gì đó tương tự như thế này trong một ứng dụng web bằng cách đảm bảo tất cả các nhiệm vụ mà chúng tôi đã hoàn thành trước khi gọi res.end(), nhưng tôi không có bất kỳ tương đương nào cho 'sự kiện' cuối cùng để gọi trước khi cho phép tập lệnh trả về.
Xem bên dưới để biết chức năng (bị hỏng) của tôi hiện tại, cố gắng đợi cho đến khi callStack trống. Tôi vừa phát hiện ra rằng đây là một kiểu tiếp cận vô nghĩa bởi vì nút chờ processHub hoàn tất trước khi nhập bất kỳ hàm không đồng bộ nào được gọi trong processObjWithRef.
function processHub(hubFileContents){
var callStack = [];
var myNewObj = {};
processObjWithRef(samplePayload, myNewObj, callStack);
while(callStack.length>0){
//do nothing
}
return 1
}
Lưu ý: Tôi đã thử nhiều lần trước đây để đạt được loại hành vi với các thư viện như async (xem câu hỏi có liên quan của tôi tại How can I make this call to request in nodejs synchronous?) vì vậy hãy lấy câu trả lời và ý kiến đó vào tài khoản trước khi đưa ra bất kỳ câu trả lời dựa trên ' chỉ cần sử dụng asynch '.
"Làm thế nào để đảm bảo tất cả các công việc không đồng bộ được hoàn thành trước khi trở về ? " Là một câu hỏi vô nghĩa - điều khiển không bao giờ được trả về shell cho đến khi tất cả các tác vụ không đồng bộ đã hoàn thành, vì vậy để lại đầu ra console cho đến sau khi hàm không đồng bộ cuối cùng đã hoàn thành cố định vấn đề của tôi. Cảm ơn tất cả vì đã gửi câu trả lời. – Trindaz