#javascript #ajax #http
#javascript #ajax #http
Вопрос:
Я хочу иметь возможность настроить непрерывный опрос, чтобы обновления обнаруживались, как только они становятся доступными.
У меня есть эта функция javascript.
function getMessage() {
var request = new XMLHttpRequest();
request.open("GET", "@routes.Application.receive()");
request.onreadystatechange = function () {
if (request.readyState === XMLHttpRequest.DONE amp;amp;
request.status === 200) {
displayMessage(request.responseText);
getMessage()
}
};
- Будет ли эта система работать или в конечном итоге она будет генерировать какую-то ошибку переполнения стека, потому что для каждого сообщения он выполняет рекурсивный вызов. Есть предложения по улучшению этого? Есть ли лучший идиоматический способ сделать это?
- Как я могу установить тайм-аут? Каков тайм-аут по умолчанию? И как я могу определить, когда наступил тайм-аут?
Большое спасибо
PS Я создал эту функцию на основе того, что я прочитал на SO. Была функция, которая, казалось, обрабатывала такие вещи, как тайм-ауты, но она использовала jQuery. Я не знаком с этим, и мне было интересно, можно ли то же самое сделать в чистом JS.
Комментарии:
1.
1.
Почему бы просто не попробовать и не посмотреть2.
window.setTimeout2. Нет, стекового потока не будет, если вы не используете синхронный запрос.
3. зачем использовать короткий опрос, когда доступно так много лучших вариантов?
Ответ №1:
Это должно быть нормально, но лучше заменить getMessage()
на setTimeout(getMessage, 500)
, чтобы избежать переполнения сервера.