【发布时间】:2019-06-11 16:12:28
【问题描述】:
我来自 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);
};
【问题讨论】:
-
什么是processProduct?
data是什么?是数组吗?使用await Promise.all(data...)而不是await data...。 -
@estus 数据是一个数组。当我需要一个序列时,Promise.all 并行运行。
-
然后就像答案所暗示的那样。不要使用
map进行迭代,它会产生一组promise,并且应该与Promise.all 一起使用。
标签: javascript node.js asynchronous sequelize.js