setTimeout() non funziona in maniera sincrona, messo dentro un ciclo for non sortirebbe nessun effetto.
Per usare setTimeout, dovrebbe sostituire il ciclo for con una funzione ricorsiva.

Uno pseudo sleep si potrebbe ottenere usando "async" e "await", novità js del 2017.