Загрузите несколько файлов сценариев с помощью jQuery по порядку с отложенным - объединение двух найденных функций - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь изменить следующую функцию, найденную в Stackoverflow, для загрузки нескольких скриптов с помощью jQuery.

$.getMultiScripts = function(arr, path) {
    var _arr = $.map(arr, function(scr) {
        return $.ajax({
        cache: true,
        url: scr,
        dataType: 'script'
    });
    });

    _arr.push($.Deferred(function( deferred ){
        $( deferred.resolve );
    }));

    return $.when.apply($, _arr);
}

var script_arr = [
    'myscript1.js', 
    'myscript2.js', 
    'myscript3.js'
];

$.getMultiScripts(script_arr, '/mypath/').done(function() {
    // all scripts loaded
});

Я хочу объединить его со следующим кодом, чтобы все запросы ajax в функции aboce getMultiScripts были отложены.

var d1 = new $.Deferred();
var d2 = new $.Deferred();
var d3 = new $.Deferred();
var d4 = new $.Deferred();

$.when( d1, d2, d3, d4 ).done(function () {
    console.log('Loaded in order.');
});

d1.resolve($.getScript("/assets/libs/swal/sweet-alert.min.js"));
d2.resolve($.getScript("/assets/js/jquery.form.js"));
d3.resolve($.getScript("/assets/js/jquery.preloader.js"));
d4.resolve($.getScript("/assets/js/item_inventory.js"));

Я пытаюсь это сделать, потому что в браузере Firefox $ .getMultiScripts не загружает сценарии по порядку.

Было бы неплохо, если бы кто-нибудь сказал мне, как добавить $ .Deferred (); на все запросы ajax в функции $ .getMultiScripts.

Извините, я не кодер ..

Я пытался ..

$.getMultiScripts = function(arr) {
    var df = new $.Deferred();
    var _arr = $.map(arr, function(scr) {
        return df.resolve($.ajax({
            cache: true,
            url: scr,
            dataType: 'script'
        }));
    });

    return $.when.apply($, _arr);
}

.. но это не работает!

Привет

...