Используйте Promise.all
, если порядок итераций не имеет значения
Если вы не возражаете против того, чтобы код выполнялся не по порядку (то есть порядок каждой итерации не имеет значения), просто используйте Promise.all
вместо:
const promises = [];
for (let i = 0; i <= 10; i += 1) {
promises.push(DoSomething());
}
const responses = await Promise.all(promises);
От MDN :
Метод Promise.all (iterable) возвращает одно Promise, которое разрешается, когда все обещания в итерируемом аргументе разрешены
Или отключить правило для этого блока
В противном случае, если вам нужно выполнить последовательную работу, просто отключите правило для этого блока:
/* eslint-disable no-await-in-loop */
for (let i = 0; i <= 10; i += 1) {
const res = await DoSomething();
}
/* eslint-enable no-await-in-loop */
Но имейте в виду
Существует причина, по которой правило существует. Многие случаи, когда await
используется в цикле, расточительны, так как каждая итерация не зависит от предыдущей, но каждая итерация ожидает разрешения предыдущей, прежде чем она даже попытается запустить следующую.
Promise.all
более эффективен в этих случаях, поскольку он работает "параллельно", более или менее.
С Документы ESLint без ожидания в цикле :
Выполнение операции над каждым элементом итерируемой задачи является обычной задачей. Однако выполнение await как части каждой операции свидетельствует о том, что программа не в полной мере использует преимущества параллелизации async / await.