Книга: Выразительный JavaScript
Обнаружение изменений
Обнаружение изменений
Хочу отметить, что разные функции, изменяющие состояние приложения, создавая или удаляя темы, или добавляя к ним комментарии, абсолютно не заботятся о том, чтобы их деятельность была видна на экране. Они просто говорят что-то серверу и надеются на механизм длинных запросов, который должен вызывать соответствующие изменения.
Учитывая созданную на сервере систему и то, как мы определили displayTalks
для обработки изменений тем, которые уже есть на странице, сам механизм длинных запросов оказывается неожиданно простым.
function waitForChanges() {
request({pathname: "talks?changesSince=" + lastServerTime},
function(error, response) {
if (error) {
setTimeout(waitForChanges, 2500);
console.error(error.stack);
} else {
response = JSON.parse(response);
displayTalks(response.talks);
lastServerTime = response.serverTime;
waitForChanges();
}
});
}
Эта функция вызывается однажды, когда программа запускается, и затем продолжает вызывать себя, чтобы убедиться, что запросы всегда работают. Когда запрос не удаётся, мы не вызываем reportError
, чтобы не раздражать пользователя всплывающим окном каждый раз при проблеме соединения с сервером. Вместо этого ошибка выводится в консоль (для облегчения отладки), и делается следующая попытка через 2,5 секунды.
Когда запрос удаётся, на экран выводятся новые данные, и lastServerTime
обновляется, чтобы отражать тот факт, что мы получили данные в соответствии с этим новым моментом времени. Запрос сразу стартует заново, и ждёт следующего обновления.
Если вы запустите сервер, и откроете два окна браузера с адресом localhost:8000, вы увидите, что действия, выполняемые вами в одном окне, моментально отображаются в другом.
- Глава 2 Обнаружение адреса
- Сохранение внесенных изменений
- 10.2. Обнаружение жестов вращения
- 4.4.2. Прогноз изменений деятельности предприятия
- Указание изменений в документе
- 13.1. Обнаружение и испытание камеры
- Вступление на путь изменений
- 10.1. Обнаружение жестов смахивания
- Упреждающие изменения: как задать направление изменений
- Инструменты автоматизации мониторинга изменений на сайтах
- 3. Станьте двигателем прорывных изменений
- Эй, как насчет отслеживания изменений?