JSFiddle - React, Tailwind, and code Playground

JavaScript

(function ($) {
    var files = [1, 2, 3, 4],
        allPromises = [];
    for (var i = 0; i < files.length; i++) {
        var promise = resizeAndUpload(files[i]);
        allPromises.push(promise);

    }

    $.when.apply($, allPromises).done(function () {
        makeAjaxCall();
    });

    function makeAjaxCall() {
        console.log('Put Ajax call here');
    }

    function resizeAndUpload(file) {
        var defer = $.Deferred();
        setTimeout(function () {
            console.log('processing file ' + file);
            defer.resolve();

        }, 2000);
        return defer.promise();
    }
})(jQuery);