实现一个createRequest方法(假设浏览器允许无限多的并行请求),调用形式如下图,最后实现效果如图:
其中request函数的输入输出和fetch函数保持一致。
function createRequest(pool) {
const queue = []
let count = 0
function doRequest() {
if(queue.length === 0 || count > pool) return
const url = queue.shift()
count++
ajax(url)
.success(function(res){
resolve(res)
})
.fail(function(err)) {
reject(err)
})
.then(function() {
count--
doRequest()
})
}
return url => {
return new Promise((resolve, reject) => {
queue.push(url)
doRequest()
})
}
}
网友评论