Ваши обратные вызовы перекрываются.
Они go как a
, a+b
, a
, a+b
...
Иногда выполняется a+b
как b+a
(потому что два setInterval
не синхронизированы идеально), и я думаю, что это вызывает у вас проблемы.
То, что вы хотели сделать, это a
, b
, a
, b
...
Вы можете попробовать изменить свою логику c, чтобы использовать одну setInterval
, и использовать переменную, чтобы узнать, является ли это a
"поворот" или b
"очередь". Примерно так:
let nextTurn = 'a';
setInterval(()=>{
if (nextTurn === 'a') {
$('#baner1').fadeOut(2000);
$('#baner2').fadeIn(2000);
nextTurn = 'b';
} else {
$('#baner1').fadeIn(2000);
$('#baner2').fadeOut(2000);
nextTurn = 'a';
}
},12000)