var i=0;
while(i>=0 && i<4){
setTimeout(function(){
document.getElementById('ad').src=adarray[i];
i++;
}, 2000);
}
setTimeout
не ожидает завершения.setTimeout
отправляет функцию в другую структуру данных и продолжает проходить через код.Он просто продолжает циклически повторяться настолько быстро, насколько возможно в вычислительном отношении.Попробуйте сделать это:
var i=0;
while(i>=0 && i<4){
setTimeout(function(){
document.getElementById('ad').src=adarray[i];
i++;
}, 2000);
console.log('created a setTimeout')
}
Похоже, вы пытаетесь запустить функцию 4 раза, ожидая 2000 мс при каждом запуске.setInterval
с условием clearInterval
идеально подойдет для ваших нужд
function changer() {
var i=0;
let imageChange = setInterval(() => {
if (i < 4) {
document.getElementById('ad').src=adarray[i];
i++
} else {
clearInterval(imageChange)
}
}, 2000)
}