Есть функция, она принимает на вход массив адресов на которые будет происходить запрос и количество параллельно выполняемых запросов. Если массив длиннее чем второй параметр, то мы должны дождаться когда можно будет делать следующие запросы.
Ниже я написал начало решения, вопрос именно в том как в коде написать очистку очереди и продолжение выполнение запросов?
const sendRequests = (requests, maxRequestsCount) => {
return new Promise(resolve => {
const responses = [];
let requestsCount = 0;
for (let i = 0; i < requests.length; i++) {
const request = requests[i];
requestsCount += 1;
if (requestsCount !== maxRequestsCount) {
makeRequest(request);
}
}
function makeRequest(url) {
return fetch(url)
.then(result => result.json())
.catch(error => error)
.then(result => {
responses.push(result);
resolve(responses);
});
}
});
}
console.log(
sendRequests([
'https://jsonplaceholder.typicode.com/todos/2',
'https://jsonplaceholder.typicode.com/todos/4',
'https://jsonplaceholder.typicode.com/todos/10',
'https://jsonplaceholder.typicode.com/todos/18'
], 3).then(response => {
console.log(response);
})
);