在 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?');
});
我有一组简单的 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?');
});