Si, pero si pruebas el código que te he puesto verás que hace lo que querías. setTimeout se ejecuta una vez, pero si lo llamas cada vez que ejecutas tu función consigues el efecto que buscabas. Si lo haces con setInterval, el intervalo es constante y no se consigue ese efecto.