ESlint и весь остальной мир говорят мне избегать вложенных Обещаний.Тем не менее, как можно применить функцию к нескольким элементам по отдельности, когда предыдущее обещание возвращает массив?Например, я хочу запустить doSomethingWithIt для каждого элемента, возвращенного предыдущим обещанием, а также сделать что-то с результатом этого.
function getSomeThings() {
return new Promise((resolve, reject) => {
resolve(['one', 'two', 'three'])
})
}
function doSomethingWithIt(theThing) {
return new Promise((resolve, reject) => {
console.log(theThing)
resolve("Did a thing")
})
}
getSomeThings().then((things) => {
things.forEach((thing) => {
doSomethingWithIt(thing)
.then((result) => {
console.log(`Result was: ${result}`)
})
})
})
В действительности, вместо того, чтобы просто печатать возвращаемое значение, эта функция может возвращать идентификатор или что-то полезное для регистрации после завершения операции (например, фиксация в базе данных).
Как этого достичь, не вкладывая обещания?Нужно ли добавить шаг, который использует Promise.all для агрегирования результатов?Или есть более аккуратный способ сделать это ...