class Semaphore {
constructor(max = 1) {
if (max < 1) { max = 1; }
this.max = max;
this.count = 0;
this.queue = [];
}
acquire() {
let promise;
if (this.count < this.max) {
promise = Promise.resolve();
} else {
promise = new Promise(resolve => {
this.queue.push(resolve);
});
}
this.count++;
return promise;
}
release() {
if (this.queue.length > 0) {
const resolve = this.queue.shift();
resolve();
}
this.count--;
}
}
const semaphore = new Semaphore(10);
for (const url of urls) {
await semaphore.acquire();
void downloadUrlSynchronized(url, semaphore);
}
async function downloadUrlSynchronized(url, semaphore) {
const resp = await fetch(url);
const blob = await resp.blob();
semaphore.release();
// const name = new URL(url).pathname.slice(1);
// downloadBlob(blob, name, url);
}
fetch
) будет не больше 10 в один момент, что собственно и требовалось.3
:это же ограничение запросов со стороны сервера (анти ддос).
https://qna.habr.com/q/1105356 вот способ.
У кого есть положительный опыт использования бюджетных (до 10 тыр) тонких клиентов, какими пользуетесь?
<a href="#" name='btn_del' id="dell" data-inf="<?php echo $listobn['title'];?>" data-delid="<?php echo $listobn['id'];?>" onclick="change()">Да</a>
// по клику вызываю функцию вызова js
function change() {
// получаю значения атрибутов ссылки
var attribute = document.getElementById("dell");
var align = attribute.getAttribute("data-delid");
var dele = attribute.getAttribute("id");
var inf = attribute.getAttribute("data-inf");
alert("Страница" + inf + " будет удалена!");
// отправляю обработчику
$.ajax({
type: 'POST',
url: 'путь',
// массивом
data: { id: dele, idnews: align, title: inf},
success: function(data) {
$('#del').html(data);
},
error: function(xhr, str){
alert('Возникла ошибка: ' + xhr.responseCode);
}
});
}
if ((isset ($_POST['id'])) && ($_POST['id'])=="dell") {
$newsid = $_POST['idnews'];
$conn = mysqli_query($db, "DELETE FROM news WHERE id='$newsid'");
if ($conn) {
echo "Страница $_POST[title] удалена!";
}
}
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri; # enforce https
# rewrite ^(.*) https://www.example.com$uri permanent;
}