JavaScript: per loop con timeout

Voglio che il mio ciclo for non venga eseguito contemporaneamente, ma attendi il timeout dopo ogni iterazione. Ad esempio:

for(var i=0; i<10; i++) { console.log(i); //wait for 1000 } 

Ho trovato molte soluzioni sullo stack overflow come questo:

 for (var i=0;i<=10;i++) { (function(ind) { setTimeout(function(){console.log(ind);}, 3000); })(i); } 

Ma in tutte le implementazioni, il ciclo attende inizialmente 3000 e quindi esegue l’intero ciclo for in una sola volta. C’è un modo in cui ogni iterazione viene chiamata dopo aver atteso 1000.