Я пытаюсь изменить следующую функцию, найденную в 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);
}
.. но это не работает!
Привет