有希望的听众

Gak*_*kho 2 javascript listeners node.js promise

我是一个巨大的承诺链,但是我意识到其中一个函数返回一个具有侦听器并对回调做出反应的对象,例如

object.on('data', function(err, data) {
     //do something
});

object.on('exit', function(err, data) {
     //do something
});
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法使用 Promise 来解决这个问题并将它们变成 thenables。除了重写我的整个 Promise 链以使用回调之外,还有没有其他选择?

rob*_*lep 5

你不能包装对象吗?

var promiseForObjectData = new Promise(function(resolve, reject) {

  // Note that you can't promisify data, because it gets called multiple times.
  object.on('data', function(err, data) {
    if (err) return reject(err);
    //do something
  });

  object.on('exit', function(err, data) {
    if (err) return reject(err);
    return resolve(...whatever...);
  });

});
Run Code Online (Sandbox Code Playgroud)