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});
明白了-我一定是疯了-这完全有道理-现在一切都好了-非常感谢!