JSFiddle - React, Tailwind, and code Playground

HTML

<a href="#">Click me!</a>

<div></div>

JavaScript

function GetSomeDeferredStuff(elem, name, cycles) {
    var el = (elem || {})
        , queueName = (name || "q")
        , len = (cycles || 5);
    return $(el).queue(queueName
    , $.map(Array(len), function (_, index) {
        return function (next) {
            return $.ajax({
                type: "POST",
                url: '/echo/html/',
                data: {
                    html: "<p>Task #" + (1 + index) + " complete.",
                    delay: (index + 1) / 2
                },
                success: function (data) {
                    $("div").append(data);
                }
            }).then(next)
        }
    })).dequeue(queueName).promise(queueName);
}

$(function () {
    $("a").click(function () {
        var promise = GetSomeDeferredStuff();
        promise.then(function () {
            $("div").append("<p>All done!</p>");
        });
    });
});