JSFiddle - React, Tailwind, and code Playground
HTML
<div id="result"></div>
JavaScript
function log (val) {
console.log(val);
document.getElementById('result').appendChild(document.createTextNode(val + ', '));
}
var intervals = [{interval: 5000, logVal: 'x', logged: false},
{interval: 7000, logVal: 'y', logged: false},
{interval: 8000, logVal: 'z', logged: false}];
var startTime;
function myLog () {
var endTime = new Date().getTime();
var diff = endTime - startTime;
for (var i = 0; i < (intervals.length - 1); i++) {
if (diff >= intervals[i].interval && diff < intervals[i+1].interval && !intervals[i].logged) {
log(intervals[i].logVal);
intervals[i].logged = true;
}
}
// for last interval
if (diff >= intervals[i].interval) {
log(intervals[i].logVal);
startTime = new Date().getTime();
return;
}
// Reset Time and run again
setTimeout(myLog, 500);
}
startTime = new Date().getTime();
setTimeout(myLog, 1000);