2014-10-09 3 views
2

Как подождать чистым способом для нескольких событий, которые будут выбрасываться?Node.js ждет нескольких событий

Что-то вроде:

event.on(['db:mongo:ready', 'db:redis:ready', 'db:rethinkdb:ready'], function() { 
    server.listen() 
}); 
+0

вы смотрели в обещаниях? – webduvet

+0

Нет, но смогу ли я event.emit («что-то»)? – Unitech

+0

да, вы можете. я понял, что вы хотите знать, когда все события уволены. – webduvet

ответ

1

Этот пример выполняется с помощью rsvp обещаний:

var RSVP = require('rsvp'), 
    Promise = RSVP.Promise; 

var emitted_promises = []; 


yourEvents.foreach(function(eventName){ 
    emitted_promises.push(new Promise(function(resolve, reject){ 
    event.on(eventName, function(){ 
     resolve('done'); 
    }); 
    }); 
}); 

RSVP.all(emitted_promises) 
    .then(function(emitted){ 
     //now you know they all are done 
     emitted; //array of 'done' but can be passed anything you need 
    }); 
Смежные вопросы