Возможно, вы сможете адаптировать это к вашим потребностям (вместо 1000 использовался Math.random .. для ускорения выполнения примера).
const test = async () => {
const list = [ 1, 2, 3 ]
const testFunc = async (item) => {
return new Promise( ( res, rej ) => {
setTimeout( () => {
console.log(item)
res( true )
}, 1000)
} )
}
await Promise.all( list.map( async ( item ) => {
await testFunc( item )
} ) )
console.log("all done")
}
test()