var time = [2000, 1000, 500]
function promiseAll(arr) {
let count = 0
let res = []
return new Promise((resolve, reject) => {
arr.forEach((el, i) => {
getApi(el).then(r => {
count++
// 按照顺序依次输出结果
res[i] = r // // ---------promiseAll: [ 2000, 1000, 500 ]
// 按照接口返回的顺序输出结果,没啥作用
// res.push(r) // ---------promiseAll: [ 500, 1000, 2000 ]
if (count === arr.length) {
resolve(res)
}
}).catch(err => reject(err))
});
})
}
// 模拟api
function getApi(t) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(t)
}, t);
})
}
promiseAll(time).then(res => {
console.log('---------promiseAll:', res);
// ---------promiseAll: [ 2000, 1000, 500 ]
})
一次请求多个接口,依次输出结果(简单实现Promise.all方法)
最新推荐文章于 2024-02-20 09:27:48 发布