上記の例を友人と一緒に使用して、これを思いつきました。これにより、配列をフィードしてコールバックを使用できるため、前のメッセージが終了したときにのみメッセージが開始されます。
var message = [
{
t: 'CLASSIFIED COMMUNICATION',
d: 200,
e: '#msgHeader1'
},
{
t: 'COLONIAL FLEET',
d: 200,
e: '#msgHeader2'
},
{
t: 'BY ORDER OF',
d: 200,
e: '#msgHeader3'
},
{
t: 'ADMIRAL WILLIAM ADAMA',
d: 200,
e: '#msgHeader4'
},
{
t: 'YOU ARE HEARBY REQUESTED AND REQUIRED TO REPORT TO COORDINATES',
d: 100,
e: '#msgMain1'
},
{
t: 'N 40 28 38.078 W 111 53 15.954',
d: 100,
e: '#msgMain2'
},
{
t: ' 1900 HRS',
d: 100,
e: '#msgMain3'
},
{
t: 'STAR DATE 2014.02.14',
d: 100,
e: '#msgMain4'
},
{
t: 'SO SAY WE ALL',
d: 200,
e: '#soSayWeAll'
}
];
var text;
var delay;
var elem;
var j = 0;
var run = function (i) {
text = message[i].t;
delay = message[i].d;
elem = message[i].e;
var teleText = function (text, elem, delay, callback) {
if (text.length > 0) {
$(elem).append(text[0]);
setTimeout(
function () {
teleText(text.slice(1), elem, delay, callback);
}, delay
);
} else if (text.length == 0) {
console.log('finished');
j++;
callback();
}
};
teleText(text, elem, delay, function () {
run(j);
});
};