Как одновременно запустить несколько функций, дождаться выполнения и продолжить код?
let data = 3200
let start = 0, end = 500;
for (let i = 0; i < Math.ceil(data.length / 500); i++){
await addDb(data.slice(start,end))
start += 500
end += 500
}
async function addDb(data){
console.log('addDB', data.length)
for await (const coin of data) {
await mongoCollection.replaceOne({
exchange: coin.exchange,
symbol: coin.symbol
}, coin, {upsert: true});
}
}
Как параллельно запустить несколько функций addDB, чтобы каждая записывала, часть строк? С await запускает по очереди, без await не ждет записи, код продолжает работать дальше.
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
Как параллельно запустить несколько функций addDB, чтобы каждая записывала, часть строк?
Например вот так...
const p = [
addDb('Задача 1', 4000),
addDb('Задача 2', 2000),
addDb('Задача 3', 1000),
addDb('Задача 4', 3000),
addDb('Задача 5', 1000),
]
Promise.allSettled(p)
.then(a => console.log('тут можно анализировать результаты', a))
.catch(console.log)
//
async function addDb(name, time) {
await new Promise(res => setTimeout(res, time))
console.log(name + ' завершена')
}