我有以下按预期工作的功能:
createObjectFrom(record) {
let obj = {};
this.opts.transformers.forEach((transformer, index) => {
const headerIndex = findIndex(this.headers, (header) => {
return header === transformer.column;
});
const value = transformer.formatter(record[headerIndex]);
obj[transformer.field] = value;
});
return obj;
}
我想重构它以使用 async await 并在 forEach 的主体中调用一个异步函数,如下所示:
createObjectFrom(record) {
let obj = {};
this.opts.transformers.forEach(async (transformer, index) => {
const headerIndex = findIndex(this.headers, (header) => {
return header === transformer.column;
});
const result = await this.knex('managers').select('name')
console.log(result);
const value = transformer.formatter(record[headerIndex]);
obj[transformer.field] = value;
});
return obj;
}
这显然会破坏函数,因为 forEach 现在正在异步执行,函数只会执行并离开。
有没有办法可以使用异步等待 forEach 以同步方式执行。我可以重构生成器吗?