Promise.all()写法
链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
自定义方法
// await 接口同时
async function awaitFn(arr = []) {
return new Promise(resolve => {
const promises = arr
let count = 0
for (let result of promises) {
result().then(res=> {
count = count + 1
// console.log({
// 'return值为:': res,
// '当前执行次数为:': count,
// '总长度为:': arr.length
// })
})
}
let interval = setInterval(() => {
if (count>= arr.length) {
// console.log('并发执行完毕')
clearInterval(interval)
resolve()
}
}, 500)
})
}
const promise1 = new Promise((resolve, reject) => {
// 模拟请求接口返回数据
setTimeout(() => {
resolve(1)
}, 500)
})
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(2)
}, 300)
})
const promise3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(3)
}, 1000)
})
let awaitFnList = []
awaitFnList.push(async () => await promise1)
awaitFnList.push(async () => {
const b = await promise2
console.log('promise2接口返回值:', b)
return b
})
awaitFnList.push(async () => await promise3)
await awaitFn(awaitFnList)
console.log('接口同时执行完毕')