Всем привет, есть задача со следующими условиями:
1. Написать функцию, получающую на вход массив ссылок и число, указывающее максимальное количество одновременных запросов.
2. Одновременно должно выполняться не более указанного числа запросов.
3. Должен возвращаться массив результатов в той же последовательности, что и адреса запросов.
4. Нельзя делать повторные запросы на дублирующиеся адреса (при этом результат всё равно должен присутствовать в результирующем массиве).
makeRequest([
'url1',
'url2',
'url1',
'url3'
], 2).then(([
result1,
result2,
result1,
result3
]) => {
});
Итак, моё решение:
const removingDuplicates = (arr) => {
return arr.filter((item, i, arr) => arr.indexOf(item) === i)
}
function makeRequests (urls, maxNumberRequests) {
const uniqueUrls = removingDuplicates(urls);
// console.log(uniqueUrls);
let response = null;
uniqueUrls.forEach(async (url, idx) => {
// console.log('url', url, idx);
if (idx === maxNumberRequests) {
return false;
}
response = await fetch(url, {
method: 'POST',
body: "statistics",
keepalive: true
});
});
return response;
}
makeRequests([
'url1',
'url2',
'url1',
'url3'
], 2);
Собственно, подскажите, что мне нужно подправить, полагаю, что я не совсем правильно понял условие задачи.