function add(a, b) {
return Promise.resolve(a + b)
}
// 从前往后依次累加
function sum(arr) {
console.time('sum')
const res = new Promise(resolve => {
arr.reduce((p, n) => p.then(val => add(val, n)), Promise.resolve(0)).then(resolve)
})
console.timeEnd('sum')
return res
}
/*
变种:如果后端设置了并发限制,
一次不能请求超过三个,怎么办?
*/
// 设置等待队列,queue。
// 当并发数达到3个时,其余请求进入队列进行保存。
// 每释放一个请求时,自动读取下一个请求。
// 当并发请求数量为0并且等待队列为空时,返回结果