Как к setTimeout придете, скажете
Главное не делать свой таймер для каждого контрола, а один на всех, тогда особых тормозов не будет. А можно вообще один таймер для подобных нужд держать. Ну и, разумеется, не запускать следующую итерацию, пока предыдущая не отработала.