Node.js等待多个事件

如何以一种干净的方式等待多个事件被发射?

就像是:

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

这个例子使用rsvp promise来完成:

 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 });