fadeIn() 回调函数不等到 fadeIn() 完成

fadeIn() callback function not waiting until fadeIn() is complete

我正在尝试创建一个函数,该函数将淡入附加到元素中。为了确保动画按顺序 运行 并等待上一个动画完成,我正在尝试使用回调函数(递归地)和 fadeIn。

$(document).ready(function() {
    var messages = [];
    messages.push("First message");
    messages.push("Second message")

    function appendContentText(newText, callbackFunction, callbackArgument) {
        $("<div>" + newText + "</div>").hide().appendTo("#content").fadeIn(1000, callbackFunction(callbackArgument));
    }

    function runMessageSequence(introCounter = 0) {
        if (introCounter == messages.length) return;
        else appendContentText(messages[introCounter], runMessageSequence, introCounter + 1);
    }

    runMessageSequence();
});

不过,所有消息都一起淡入淡出。所以在我看来,随后的淡入是立即调用的,而不是在 1000 毫秒延迟之后调用的。

我怀疑这可能与我将 'hide' 和 'appendTo' 以及 'fadeIn' 应用到选择器的顺序有关。

我的猜测是您可能会立即调用函数而不是引用它。如果你只是编辑如下,它会做你想要的

$("<div>" + newText + "</div>").hide().appendTo("#content").fadeIn(1000, function(){
    callbackFunction(callbackArgument)
});

勾选Fiddle