setInterval
устанавливает повторяющийся таймер, setTimeout
устанавливает таймер, который срабатывает только один раз.Опрос - это когда вы постоянно что-то просите, вместо того, чтобы ждать уведомления.Иногда необходим опрос, например, если нет способа получить уведомление - и это часто имеет место в приложениях Ajax.И setInterval
, и setTimeout
могут использоваться для реализации опроса, в зависимости от того, что вы хотите сделать.
В случае периодического запроса к серверу рекомендуется использовать setTimeout
вместо setInterval
.При обратном вызове вы выполняете запрос, дождитесь ответа, а затем установите новый таймер, используя setTimeout
.Если вы используете setInterval
и задержка запроса сопоставима с интервалом, то вы рискуете, что ответы будут выходить из строя.Например, таймер срабатывает, и вы делаете запрос, это занимает немного больше времени, чем обычно, поэтому прежде чем он вернется, таймер срабатывает снова, поэтому вы делаете новый запрос.Теперь вас ждут два запроса.Лучше было бы дождаться возвращения первого запроса, прежде чем делать второй.