使用es3 语法模拟 Promise.all() 的效果
// 模拟异步函数
var asyncFunc = function (aa, time, cb) {
setTimeout(() => {
const data = aa
cb(aa, data)
}, time)
}
// 结果集
var resultArr = []
// 所有异步函数执行后的最终处理函数
var finalFunc = function () {
console.log('结束')
console.log(resultArr)
}
// 计数器
var num = 0
// for循环模拟发送多个请求
for (var i = 0; i < 3; i++) {
var time = Math.random() * 1000
asyncFunc(i, time, function (index, data) {
// 按顺序插入结果集
resultArr[index] = data
num++
// 所有异步函数执行完毕执行
if (num === 3) {
finalFunc()
}
})
}

本文介绍如何使用ES3语法模拟Promise.all()的功能,通过异步函数和计数器实现并发请求并确保按顺序处理结果。
950

被折叠的 条评论
为什么被折叠?



