实现一个createRequest方法

2021-02-26  本文已影响0人  jluemmmm

实现一个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()
        })
    }
}
上一篇 下一篇

猜你喜欢

热点阅读