Versprechen auslösen, wenn ein Ereignis ausgelöst wird

Mein gesamtes Projekt verwendet (Bluebird) Promises, aber es gibt eine bestimmte Bibliothek, die EventEmitter verwendet.

Ich möchte etwas erreichen wie:

Promise.on('connect', function() {
    x.doSomething();
}).then(function() {
    return new Promise(function(resolve) {
        y.doAction(resolve); // this will result in `eventB` getting emitted
    });
}).on('eventB', function() {
    z.handleEventB();
}).then(function() {
    z.doSomethingElse();
});

Ich lese die Antwort aufEventEmitter inmitten einer Kette von Versprechungen. Das gibt mir eine Möglichkeit, den Callback für das 'connect'-Ereignis auszuführen. Hier ist, wo ich so weit gekommen bin

var p = new Promise(function(resolve) {
    emitter.on('connect', resolve);
});
p.on = function() {
    emitter.on.apply(emitter, arguments);
    return p;
};
p.on('connect', function() {
    x.doSomething();
}).then(function() {
    return new Promise(function(resolve) {
        y.doAction(resolve); // this will result in eventB getting emitted
    });
});

Wie kann ich nun für 'eventB' weiter verketten?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage