всё правильно, таймеры в js работают именно так.
первое и самое простое что приходит в голову.
var str1 = "Text1";
var str2 = "Text2";
function printContent(id, string, callback){
var element = document.getElementById(id);
var counter = 0;
var interval = window.setInterval( function(){
element.innerHTML += string[counter++];
if(counter == string.length){
window.clearInterval(interval);
if (typeof callback!='undefined') callback();
}
}, 50 );
}
printContent("span1", str1,function(){
printContent("span2", str2);
});