setInterval
не гарантирует, что вы получите интервал в 1 секунду, потому что другие вещи могут работать, но вы можете приблизиться со следующим
function out(ar) {
var i = 0, j = 0;
var interval = setInterval(function(){
// Start with the next row if the last one was finished.
if (i < ar.length && j == ar[i].length) {
++i;
j = 0;
// Put a line after it.
document.body.appendChild(document.createElement('br'));
}
// Check if we're out of rows.
if (i >= ar.length) { clearInterval(interval); return; }
// Write out a number.
document.body.appendChild(document.createTextNode('' + ar[i][j]));
// We're done with the cell that we just wrote.
++j;
}, 1000 /* milliseconds */);
}
Поместите индексы массива вне функции, поэтому каждый раз, когда срабатывает интервал, он получает состояние цикла из последнего запуска.
Кроме того, вы не можете использовать document.write
в обработчике интервалов, потому что вызов document.write
после того, как документ закрыт, забивает существующий документ.