Синхронность в циклах js все еще заставляет меня взбираться на стену.
То, что я хочу сделать, довольно просто
async doAllTheThings(data, array) {
await array.forEach(entry => {
let val = //some algorithm using entry keys
let subVal = someFunc(/*more entry keys*/)
data[entry.Namekey] = `${val}/${subVal}`;
});
return data; //after data is modified
}
Но я не могу сказать, действительно ли это безопасно или нет,Мне просто не нравится простой шаблон петли
for (i=0; i<arrayLength; i++) {
//do things
if (i === arrayLength-1) {
return
}
}
Я хотел лучший способ сделать это, но я не могу сказать, работает ли то, что я пытаюсь, безопасно или нет, или я просто убежалне попал в паттерн данных, который вызовет состояние гонки.
Или, может быть, я обдумываю это.Алгоритм в массиве состоит исключительно из некоторых операторов MATH и присваивания ... и небольшого вызова функции, который сам по себе также состоит исключительно из большего количества операторов MATH и присваивания.Они предположительно полностью синхронны по всем направлениям.Но циклы иногда бывают странными.
Вопрос
Можно ли таким образом использовать await вне самого цикла, чтобы вызвать код для ожидания завершения цикла??Или это единственный безопасный способ сделать это - старый способ просто проверять, где вы находитесь в цикле, и не возвращаться, пока не дойдете до конца, вручную.