/**
*
* @param {Array} urls
* @param {Function} load 请求
* @param {Number} limit 最小值
*/
function limitload(urls, handle, limit) {
// console.log(urls)
let myulrs = urls.slice()
let promises = myulrs.splice(0, limit).map((url, index) => {
return handle(url).then(() => {
return index;
})
});

let p = Promise.race(promises);
console.log(p)
for (let i = 0; i < myulrs.length; i++) {
// 去循环看
p = p.then(index => {
console.log(index)
promises[index] = handle(myulrs[i]).then(() => {
return index;
})
return Promise.race(promises);
})
}
}




let res = [];
function load(i) {
res.push(i)
return new Promise(function (resolve) {
setTimeout(() => {
resolve(i);
}, random(1, 100))
})
// return Promise.resolve(i++)
}


function random(lower, upper) {
return Math.floor(Math.random() * (upper - lower)) + lower;
}
limitload([1, 2, 3, 4, 5, 6, 7, 8, 9], load, 2)
setTimeout(() => {
console.log('res', res)
}, 1000)