Это сложный вопрос.
for (var i = 1; i <= totalNumberofRows; i++) {
for (var j = 1; j <= i;) {
printSlow(j, function(){
j++
})
}
function printSlow(qty) {
let counter = qty
let printer = setInterval(function() {
if (counter > 0) {
document.print('*')
counter --
}
else {
clearInterval(printer)
document.print('<br />')
callback()
}
}, 1000)
}
setInterval isyn c, поэтому вы должны это учитывать. Вам также нужно очистить интервал, как только вы получите то, что вам нужно от него. Исходному l oop, вероятно, понадобятся некоторые настройки.