繁体   English   中英

ES6类数组中带有回调的调用方法

[英]Call method with callback in array of ES6 classes

我有一系列简单的ES6类。 每个类都有一个构造函数和一个接受回调的hello方法。 我需要迭代该数组,并为每个类调用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 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');
});

您必须从映射函数返回promise,然后可以使用Promise.all等待它们:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM