Я немного запустил функцию в консоли Chrome и получил следующие результаты:
Text 1
1
2
3
Text 2
5
6
7
8
9
10
Text 3
12
13
14
15
16
17
18
Text 1...
Это может быть проблема вне вашей функции, проблема, специфичная для вашего браузера, или я неЯ не понимаю вашу проблему.
Я переписал ваш код так, как написал бы, попробуйте этот формат:
function TextChanger() {
clearInterval(timer)
var i = 0;
timer = setInterval( () => {
const parts = { 0: 'Text 1', 4: 'Text 2', 11: 'Text 3' };
if (parts[i])
console.log(parts[i]);
else
console.log(i); // 1s, 2s, 3s has passed
i++;
i %= 19;
}, 1000)
}