function p(flag, key) {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (flag) resolve(key)
else reject(key)
}, 2000)
})
}
const arr = []
for (let i = 1; i <= 5; i++) {
arr.push(() => p(i % 2 === 0, i))
}
async function loop(arr) {
try {
const curP = arr.shift()
const res = await curP()
console.log('res:', res)
} catch(err) {
console.log('err:', err)
} finally {
if (!arr.length) return
loop(arr)
}
}
loop(arr)