在setTimeout中使用fadeOut的计时问题

时间:2018-09-23 03:11:19

标签: javascript jquery settimeout fadeout

我的jQuery代码有问题。

在开始时它会显示带有改组效果的文本,然后在11秒钟后淡出并再次执行此操作。一段时间后,我在开始混洗效果时获得了fadeOut效果。

似乎它们在不同的时间轴上运行。

$( document ).ready( function(){

     function textShuffle() {
        $( "#text" ).shuffleLetters().fadeIn().delay( 11000 ).fadeOut( 400 );
        setTimeout( textShuffle, 12000 );
     }
     textShuffle();

});

我该如何解决。

2 个答案:

答案 0 :(得分:0)

也许您应该在fadeOut完成后调用递归方法,如下所示:

$( document ).ready( function() {

    function textShuffle() {
        $("#text").shuffleLetters().fadeIn().delay(11000).fadeOut(400, Function() {
            setTimeout(textShuffle, 12000);});
    }

    textShuffle();
});

答案 1 :(得分:0)

@ alexander-nied通过删除.shuffleLetters()其余脚本而工作正常之后,我意识到该功能需要600毫秒以上的时间才能完成,而且我无法确定完成任务所需的时间。

所以现在我在调用setTimeout()之前在#text中添加了promise()

function textShuffle() {
    $( "#text" ).shuffleLetters().fadeIn().delay( 11000 ).fadeOut( 400 );
    $( "#text" ).promise().done( function(){
            setTimeout( textShuffle, 1 );
    });
 }