Рекурсивный вызов java сценария анимации функции, время выполнения после каждого цикла - PullRequest
0 голосов
/ 01 февраля 2020

В готовой функции начинается анимация scrollDown, при полном прослушивании обратного вызова scrollDown я вызвал функцию scrollUp, чтобы начать анимацию прокрутки вверх. После завершения цикла анимация прокрутки вниз займет некоторое время, чтобы начать заново. Что еще более важно время задержки увеличивается после каждого цикла.

$(document).ready(function(){
   scrollDown();
});
function scrollDown(){
    $('html, body').animate({
        scrollTop:$("#4").offset().top-100
    },
    {
        duration:2000,
        complete: function(){
           scrollUp();
        }
    });
}
function scrollUp(){
        $('html, body').animate({
            scrollTop:$("#1").offset().top-100
        },
        {
            duration:2000,
            complete: function(){
               scrollDown();
            }
        });
}

1 Ответ

0 голосов
/ 02 февраля 2020

Добавление $ ('html, body'). Stop (); сделало трюк, теперь анимация завершена плавно и без задержки. Но почему я должен вызывать функцию stop ()? Потому что я уже реализовал complete callback.

$(document).ready(function(){
   scrollDown();
});
function scrollDown(){
    $('html, body').stop(); // no idea why I need to call this stop function
    $('html, body').animate({
        scrollTop:$("#4").offset().top-100
    },
    {
        duration:2000,
        complete: function(){
           scrollUp();
        }
    });
}
function scrollUp(){
        $('html, body').stop(); // no idea why I need to call this stop function
        $('html, body').animate({
            scrollTop:$("#1").offset().top-100
        },
        {
            duration:2000,
            complete: function(){
               scrollDown();
            }
        });
}
...