在 ES6 类 数组中使用回调调用方法

Call method with callback in array of ES6 classes

我有一组简单的 ES6 classes。每个 class 都有一个构造函数和一个接受回调的 hello 方法。我需要迭代该数组并为每个 class 调用 hello 方法。在我要发出通用事件之前,每个回调都必须完成。我只是不确定执行此操作的最佳方法。

let todo = this.instance.map((obj, i) => {
    return obj.module.hello((cb) => {
        cb();
    });
}); 

Promise.all([
  todo
]).then(() => {
    console.log('done?');
    //emitter.emit('ready');
});

我的 class 看起来像这样。

class Hero extends Abstract {

  constructor (options) {
    super(options);
  }

  hello(cb) {
      console.log('Hello || HeroClass');
      setTimeout(() => {
          cb();
      }, 2000);
  }
}

像这样创建一个承诺数组:

let todo = this.instance.map((obj, i) => {
    return new Promise((resolve, reject) => {
       obj.module.hello(err => err ? reject(err) : resolve());
    });
}); 

Promise.all(todo).then(() => {
    console.log('done?');
    //emitter.emit('ready');
});

您必须 return 来自映射函数的承诺,然后您可以使用 Promise.all:

等待它们
let todo = this.instance.map((obj, i) => {
    return new Promise(resolve => 
        obj.module.hello(resolve)
    )
});

Promise.all(todo).then(() => {
    console.log('done?');
});