Middle+
Практикалык тапшырма: URL массивин жана бир убакта жасала турган суроолордун чегин аныктаган функцияны иштеп чыгуу, жана fetch-суроолорду чектөө менен аткаруу (бир убакта limit суроолордон ашпайт), натыйжаларды баштапкы тартипте кайтаруу.
sobes.tech AI
AIден жооп
Масалыны чече үчүн бир убакта жасала турган fetch суроолорунун санын чектөө керек болсо, кезек колдонуп, активдүү убададардын санын көзөмөлдөй аласыз. Төмөндө async/await колдонуп JavaScriptте ишке ашыруу мисалы келтирилген:
async function limitedFetch(urls, limit) {
const results = new Array(urls.length);
let activeCount = 0;
let currentIndex = 0;
return new Promise((resolve, reject) => {
function next() {
if (currentIndex === urls.length && activeCount === 0) {
resolve(results);
return;
}
while (activeCount < limit && currentIndex < urls.length) {
const index = currentIndex++;
activeCount++;
fetch(urls[index])
.then(res => res.text()) // же res.json() тапшырмага жараша
.then(data => {
results[index] = data;
})
.catch(err => {
results[index] = err;
})
.finally(() => {
activeCount--;
next();
});
}
}
next();
});
}
Бул коддо, биз бир убакта limit ашык суроо жүктөбөйбүз жана ар бир аяктагандан кийин кийинкисин кезекке чыгарабыз. Натыйжалар results массивинде баштапкы тартипте сакталат.