Javascript oncomplete调用后的无限循环函数-为什么?

Javascript oncomplete调用后的无限循环函数-为什么?,javascript,tween,gsap,Javascript,Tween,Gsap,我当前有一个提交按钮,单击时调用函数showPreloadIcon()一次。从这里,我基本上展示了一个通过几个消息循环的预加载覆盖 我的问题是,当从以下位置调用preload text()时,似乎会运行无限调用: function preloadNextMessage() { indexMessage++; preloadText(); } 如果我把它评论出来,我看不出有任何问题。然而,当调用它时,它似乎将preload messagefadeout()放入一个无限循环中-有

我当前有一个提交按钮,单击时调用函数
showPreloadIcon()
一次。从这里,我基本上展示了一个通过几个消息循环的预加载覆盖

我的问题是,当从以下位置调用
preload text()
时,似乎会运行无限调用:

function preloadNextMessage() {
    indexMessage++;

    preloadText();
}
如果我把它评论出来,我看不出有任何问题。然而,当调用它时,它似乎将
preload messagefadeout()
放入一个无限循环中-有什么想法吗

整个代码:

var createUserPreloadMessages = new Array("Creating your user", "Message 2", "Message 3", "Message 4");

var indexMessage = 0;

function showPreloadIcon() {

    TweenMax.to($("#preloadIcon"), 0.5, {autoAlpha: 1});

    preloadText();
}


function preloadText() {
    $("#preloadText").css({
            visibility: "hidden"
    });

    $("#preloadText").html(createUserPreloadMessages[indexMessage]);

    TweenMax.to($("#preloadText"), 0.5, {delay: 1, autoAlpha: 1, onComplete:preloadMessageFadeOut()});
}

function preloadMessageFadeOut() { 

    TweenMax.to($("#preloadText"), 0.5, {top: "10px", delay: 3, autoAlpha: 0, onComplete:preloadNextMessage()});  
}

function preloadNextMessage() {
    indexMessage++;

    preloadText();
}

猜测一下,preload messagefadeout()实际上会在当时和那里调用该函数,并将onComplete设置为返回值-nothing。删除括号将改为将onComplete设置为函数对象。PrelonextMessage()调用也是如此。

您需要传递函数引用作为回调函数(即,传递回调函数时不要使用括号)。通过在回调中包含括号,可以在延迟之前执行它们,这会导致无限循环:

TweenMax.to($("#preloadText"), 0.5, {delay: 1, autoAlpha: 1, onComplete:preloadMessageFadeOut});

TweenMax.to($("#preloadText"), 0.5, {top: "10px", delay: 3, autoAlpha: 0, onComplete:preloadNextMessage}); 

明白了-我一定是疯了-这完全有道理-现在一切都好了-非常感谢!