我来自Ruby,所以花了一天的时间弄清楚为什么process.exit(1)在循环结束之前执行。有什么想法需要改变才能使其生效吗?
export default async () => {
const workbook = Xlsx.readFile(path.join(__dirname, './excel.xlsx'));
const data = Xlsx.utils.sheet_to_json(workbook.Sheets.Extract, {
header: getHeaderFor(workbook.Sheets.Extract),
});
await data.map(async (product, index) => {
if (index < 6) return;
await processProduct(product);
});
process.exit(1);
};
答案 0 :(得分:5)
我认为如果您替换:
await data.map(async (product, index) => {
if (index < 6) return;
await processProduct(product);
});
使用
for (let i = 6; i < data.length; i++) {
await processProduct(data[i]);
}
您的问题将得到解决
答案 1 :(得分:1)
虽然@codtex的答案有效,但由于循环的每次迭代都将等到之前的迭代,因此也会导致性能不佳。您真正想做的是收集所有的Promise,然后等待它们完成:
const promises = data.map((product, index) => {
if (index < 6) return;
return processProduct(product);
});
await Promise.all(promises);