-3
给定一个请求的URL列表,我需要随时保持5个请求的活动,并不是所有的请求都会花费同一时间,所以如果一个完成,我想发送一个新的请求。我尝试了几种方法,并在$ .all和$ .when文档中查找,但我无法弄清楚如何完成此操作。在时间保留5 ajax请求
有人能指出我解决这个问题的正确方向吗?
给定一个请求的URL列表,我需要随时保持5个请求的活动,并不是所有的请求都会花费同一时间,所以如果一个完成,我想发送一个新的请求。我尝试了几种方法,并在$ .all和$ .when文档中查找,但我无法弄清楚如何完成此操作。在时间保留5 ajax请求
有人能指出我解决这个问题的正确方向吗?
不知道为什么你需要做到这一点,但在这里你去:
var urls = [
'https://jsonplaceholder.typicode.com/photos?albumId=1',
'https://jsonplaceholder.typicode.com/photos?albumId=2',
'https://jsonplaceholder.typicode.com/photos?albumId=3',
'https://jsonplaceholder.typicode.com/photos?albumId=4',
'https://jsonplaceholder.typicode.com/photos?albumId=5',
'https://jsonplaceholder.typicode.com/photos?albumId=6',
'https://jsonplaceholder.typicode.com/photos?albumId=7',
'https://jsonplaceholder.typicode.com/photos?albumId=8',
'https://jsonplaceholder.typicode.com/photos?albumId=9',
'https://jsonplaceholder.typicode.com/photos?albumId=10'
],
running = 0;
function startNext() {
if(running < 5 && urls.length) {
var url = urls.shift();
$.ajax({
url: url,
method: 'GET',
complete: function(xhr, status) {
console.log('completing request for:', url);
running--;
}
});
console.log('number of requests running:', running);
console.log('starting request for:', url);
running++;
}
urls.length && setTimeout(function() {
startNext();
}, 0);
}
startNext();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
你是什么意思的“养5个请求随时活着”吗?除了提出请求之外,为什么你会有要求无缘无故提出请求? – gforce301
@ gforce301我同意它的措辞很奇怪,但我认为他们的意思是,如果他们有请求1-10,只有5个执行一次,所以如果请求1已完成,但2-5仍在运行仅呼叫请求6. – George
给定一个请求10个网址列表,我必须提出10个请求,对不对?但我想同时做5个,如果其中一个完成另一个网址并提出请求。 – mart