Tôi có và ứng dụng được viết bằng NodeJS với Express và đang cố gắng sử dụng EventEmitter để tạo một loại kiến trúc plugin với các plugin cắm vào mã chính bằng cách nghe các sự kiện phát ra.NodeJS đợi gọi lại để kết thúc sự kiện phát ra
Sự cố của tôi xuất hiện khi chức năng plugin thực hiện yêu cầu không đồng bộ (để lấy dữ liệu từ mongo trong trường hợp này) điều này khiến mã plugin hoàn tất và trả về điều khiển trở lại trình phát ban đầu. trong mã plugin kết thúc.
Ví dụ:
Main App:
// We want to modify the request object in the plugin
self.emit('plugin-listener', request);
Plugin:
// Plugin function listening to 'plugin-listener', 'request' is an arg
console.log(request);
// Call to DB (async)
this.getFromMongo(some_data, function(response){
// this may not get called until the plugin function has finished!
}
Lý do của tôi để tránh một hàm callback trở lại mã chính từ chức năng 'getFromMongo' là có có thể là 0 hoặc nhiều plugin lắng nghe sự kiện. Lý tưởng nhất là tôi muốn có một số cách để chờ đợi những thứ DB để kết thúc trước khi trở về điều khiển các ứng dụng chính
Nhiều Cảm ơn