Your problem was that your loop was calling all those timeouts at once, not delaying the call. Instead, you need an interval and then clear it when you're finished with the array (I took some inspiration from this: setTimeout inside for loop). Here's a modified example, using the same approach as the link I posted:
var test1 = ["This","is","a","test","to","see","if","it","really","works."];
var c = document.getElementById("screen"); //Setup screen.
var ctx = c.getContext("2d");
ctx.font = "normal 42px Arial";
ctx.textAlign= "center";
var i = 0;
function clearScreen(){
ctx.clearRect(0, 0, 300, 100);
}
var timer = setInterval(function(){
clearScreen();
ctx.fillText(test1[i], 150, 91);
i++;
if(i >= test1.length) {
clearInterval(timer);
}
}, 200);
timer();
And here's a link to the working JSFiddle