По идее вам надо через setTimeout делать а не через цикл.
Но вообще для таких целей правильнее использовать вебсокеты так как кучи запросов будут грузить сервер. А когда данные сами приходят через вебсокеты то всё работает быстро и не нагружает сервер.
+ за сокеты, фронт не должен следить за состоянием данных на бэкенде - он должен если надо - слушать бэкенд и реагировать на посланные бэкендом данные.