Я реализую программное обеспечение, которое считывает состояние системы с помощью jQuery, используя $. GetJSON .
Идея состоит в том, что я отображаю данные в реальном времени в браузере и хочу обновлять данные как можно чаще. Сервер также работает на локальном хосте, поэтому теоретически у меня должна быть очень низкая задержка (не менее 50 мс, даже менее 20).
Но вопрос в следующем: как я могу реализовать getJSON с jQuery, чтобы запрос HTTP GET автоматически отправлялся сразу после завершения предыдущего запроса?
В моей текущей реализации я определил функцию обновления:
function updateSimulation() {
$.getJSON('/simulation/', function(data) {
// ..parse data here
});
}
И добавляется обратный вызов один раз каждые 50 мс:
document.simulationIntervalId = setInterval( "updateSimulation()", 50 );
Проблема в том, что если запрос занимает более 50 мс, несколько запросов будут ожидать результата асинхронно, а это означает, что если один запрос занимает больше времени, более старые данные могут быть заменены более новыми данными, что нежелательно.
Таким образом, в основном это означает, что может быть рассмотрено одно из следующих двух решений: 1) либо при получении ответа все ожидающие запросы могут быть уничтожены (не оптимально), 2) новый запрос отправляется только после возврата предыдущего (возможно оптимальное решение).
Но, как всегда, все комментарии и ответы очень ценятся!