[英]Extending Built-in Array With ES6 Classes - Method is not a function error
[英]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.