Cevap
Sözleri ile birlikte kullanabilir getScript()
ve tüm komut dosyaları yüklenene kadar bekleyebilirsiniz, örneğin:
$.when(
$.getScript( "/mypath/myscript1.js" ),
$.getScript( "/mypath/myscript2.js" ),
$.getScript( "/mypath/myscript3.js" ),
$.Deferred(function( deferred ){
$( deferred.resolve );
})
).done(function(){
//place your code here, the scripts are all loaded
});
VAKTİNİ BOŞA HARCAMAK
bAŞKA FIDDLE
Yukarıdaki kodda, bir Ertelenmiş eklemek ve içinde çözmek $()
, bir jQuery çağrısının içine başka herhangi bir işlevi yerleştirmek gibidir $(func)
, örneğin ,
$(function() { func(); });
Yani, DOM'un hazır olmasını bekler, bu nedenle yukarıdaki örnekte $.when
, tüm komut dosyalarının yüklenmesini ve$.Deferred
DOM hazır geri aramasında çözülen çağrı nedeniyle DOM'un hazır olmasını bekler .
Daha genel kullanım için kullanışlı bir işlev
Herhangi bir komut dizisi dizisini kabul eden bir yardımcı program işlevi şu şekilde oluşturulabilir:
$.getMultiScripts = function(arr, path) {
var _arr = $.map(arr, function(scr) {
return $.getScript( (path||"") + scr );
});
_arr.push($.Deferred(function( deferred ){
$( deferred.resolve );
}));
return $.when.apply($, _arr);
}
bunun gibi kullanılabilir
var script_arr = [
'myscript1.js',
'myscript2.js',
'myscript3.js'
];
$.getMultiScripts(script_arr, '/mypath/').done(function() {
// all scripts loaded
});
burada yol tüm komut dosyalarının başına eklenir ve ayrıca isteğe bağlıdır, yani dizi tam URL'leri içeriyorsa, bir de bunu yapabilir ve yolu bir arada bırakabilir
$.getMultiScripts(script_arr).done(function() { ...
Bağımsız değişkenler, hatalar vb.
Bir kenara, done
geri aramanın, komut dosyalarında iletilenlerle eşleşen bir dizi bağımsız değişken içereceğini unutmayın; her bağımsız değişken yanıtı içeren bir diziyi temsil eder
$.getMultiScripts(script_arr).done(function(response1, response2, response3) { ...
burada her dizi gibi bir şey olacaktır [content_of_file_loaded, status, xhr_object]
. Komut dosyaları yine de otomatik olarak yükleneceği için genellikle bu argümanlara erişmemize gerek yoktur ve çoğu zaman done
tüm komut dosyalarının yüklendiğini bilmek için gerçekten peşinde olduğumuz tek şey geri aramadır, sadece tamlık için ekliyorum ve yüklenen dosyadaki gerçek metne erişilmesi gerektiğinde veya her XHR nesnesine veya benzer bir şeye erişilmesi gerektiğinde nadir durumlarda.
Ayrıca, komut dosyalarından herhangi biri yüklenemezse, hata işleyici çağrılacak ve sonraki komut dosyaları yüklenmeyecektir.
$.getMultiScripts(script_arr).done(function() {
// all done
}).fail(function(error) {
// one or more scripts failed to load
}).always(function() {
// always called, both on success and error
});
$.Deferred(function( deferred ){$( deferred.resolve );})
buraya eklediğini bana açıklar mısın ?