有前途的听众

Promisifying listeners

本文关键字:有前途      更新时间:2023-09-26

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

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

我想知道是否有一种方法可以通过承诺来实现这一点,并将其转化为货币。除了重写我的整个承诺链以使用回调之外,没有其他选择吗?

不能包装对象吗?

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