У меня есть ситуация, когда я зацикливаюсь на некоторых данных, и мне нужно выполнить асинхронную операцию для каждого элемента массива.Я не хочу ждать результата в цикле.Вместо этого я хочу просто начать выполнение обещаний из цикла.После завершения цикла я хочу подождать, пока все обещания не будут разрешены, и затем вернуть некоторый результат.
Код ниже:
const t1 = delay => new Promise(resolve => {
setTimeout(() => {
console.log('from t1')
resolve()
}, delay)
})
const promises = []
const results = []
const array = [1 ,2]
array.forEach((element, index) => {
const temp = t1((index + 1) * 1000).then(() => results.push(5))
promises.push(temp)
})
const mainFunc = async () => {
const bigPromise = () => new Promise(resolve => {
if (results.length === 2) {
resolve()
}
})
await bigPromise()
console.log(results)
}
mainFunc()
Я думал, что смогу создать еще одно обещание bigPromise
, котороепроверит, равна ли длина массива 2
.Таким образом, я буду знать, что все обещания выполнены.Однако это не работает.Как я могу ждать какого-то уведомления в Javascript?Я не хотел бы использовать setInterval
для этой проблемы.