【发布时间】:2021-06-21 13:17:28
【问题描述】:
我有以下代码:
const data = res?.advancedResult?.data;
for (const referential of data) {
const entities = await EntityDAO.find({ query: { referential: referential?._id } });
for (const entity of entities) {
const items = await ItemDAO.find({ query: { entity: entity?._id } });
entity.items = items.length;
}
referential.entities = entities.map(entity => ({ name: entity.name, items: entity.items }));
}
由于我使用的是 eslint,所以出现以下错误:
[eslint] Unexpected `await` inside a loop. (no-await-in-loop)
我不能使用Promise.all,因为循环的迭代实际上并不是相互独立的。
有没有办法避免循环内部的等待,这样我就可以提高性能?或者我应该通过添加/* eslint-disable no-await-in-loop */来消除错误
【问题讨论】:
-
试试。然后,不确定这是否会有所作为。
-
在我看来,您不必按顺序运行任一循环的数据库操作,因为循环的第二次迭代不依赖于循环的第一次迭代中的任何内容,因此它们似乎对所有人彼此独立。因此,您可以使用
Promise.all()并行运行它们。 -
内循环的迭代对我来说似乎是相互独立的。
-
...外循环的迭代也是如此。
标签: javascript node.js eslint lint