Я написал небольшую функцию JavaScript, которая будет выполнять Ajax-запрос каждые x секунд.
Я надеялся, что некоторые из вас могли бы взглянуть на это и дать мне какие-либо указания на избыточный код или плохую практику.
Идея функции заключается в следующем:
1) Разрешить инициирование опроса
2) После запуска опрашивайте один раз каждые x секунд и выполните запрос AJAX.
3) Прекратить опрос после запуска disablePolling ().
Вот код:
requester.js
function Request() {
this.poll = false;
this.activatePoll = function () {
this.poll = true;
this.runPoll();
};
this.disablePoll = function () {
this.poll = false;
};
this.runPoll = function () {
var self = this;
var poll = setTimeout(function () {
$.ajax({
url: './request.php',
success: function (response) {
console.log(response);
},
dataType: "json",
complete: function () {
if (self.poll == false) {
clearTimeout(poll);
} else {
self.runPoll();
}
}
})
}, 1000);
};
}
Для тех, кто хочет запустить код:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Requester</title>
</head>
<body>
<h1>Requester</h1>
<div id="requester">
<input type="button" onclick="$request.test();" value="test">
<input type="button" onclick="$request.activatePoll();" value="poll">
<input type="button" onclick="$request.disablePoll();" value="turn off poll">
</div>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script src="js/request.js"></script>
<script>
$(document).ready(function () {
$request = new Request();
});
</script>
</html>
request.php
<?php
echo json_encode($time());
?>
Спасибо.
Задача ещё не решена.
Других решений пока нет …