我无法使for循环内的函数同步运行
内部EmployeePrint.js
fillData(item, taxObj) {
let fullName = item.getFullName();
let timePeriod = item.getTimePeriod();
let grossIncome = item.getGrossIncome();
let incomeTax = item.getIncomeTax(taxObj);
let netIncome = item.getNetIncome();
let mySuper = item.getSuper();
this.name = fullName;
this.payPeriod = timePeriod;
this.grossIncome = grossIncome;
this.incomeTax = incomeTax;
this.netIncome = netIncome;
this.mySuper = mySuper;
return this;
}
项目是员工对象。它有一些方法,我在fillData中运行它
async print(arr, fileName, taxObj) {
let buf = [];
arr.map(async (item) => {
let ep = new EmployeePrint();
ep = ep.fillData(item, taxObj);
buf.push(ep);
});
return await this.printPromise(buf, fileName);
}
在填充数据之后,我将员工对象推入数组以供稍后打印。
我的问题是我不知道如何确保每次迭代都完成所有功能。
答案 0 :(得分:0)
对于初学者来说,您应该调用forEach并推入buf,或者只使用map的返回值,甚至不创建buf。
第二,如果要在循环中等待(而不是map或forEach),或者仅映射到promises并等待所有,则应使用for循环。
async print(arr, fileName, taxObj) {
let buf = [];
const promises = arr.map((item) => {
let ep = new EmployeePrint();
ep = ep.fillData(item, taxObj);
buf.push(ep);
return this.printPromise(buf, fileName);
});
await Promise.all(promises)
}