2011-03-05 15 views
6

2 ayrı $.getScript çağrısının başarıyla yüklendikten sonra yürütmek istediğim bir geri arama işlevi var.JavaScript/jQuery ile Çift veya Çoklu Geri Arama Tasarımı Kalıbı

aşağıda tasarım kullanarak değilim, ama dağınık hissediyor ve adlandırılmış fonksiyonun kullanılması

var foo_ready = false; 
var bar_ready = false; 
var dual_callback = function(){ 
    if(foo_ready && bar_ready) 
    { 
     //do things 
    } 
}; 

jQuery.getScript('/foo.js', function(){ 
     foo_ready = true; 
     dual_callback(); 
    }); 
jQuery.getScript('/bar.js', function(){ 
     bar_ready = true; 
     dual_callback(); 
    }); 

tek geri arama yürütmek yapmak için daha iyi ya da daha şık bir yolu var mı çok-jQuery un hissediyor Birden fazla eşzamansız çağrı tamamlandıktan sonra? Eğer varsa

+0

. Ben bu kodu gördüm ve hemen anladım, adam bazı boklu SO posterler barf onların soru içine karşılaştırıldığında, bu şık ve zarif. "Düzeltmeyeceğim, amaçlanan şekilde çalışacağım" derdim. – jpsimons

cevap

12

jQuery bunu yapabilirsiniz 1.5.1:

$.when($.getScript('/foo.js'), $.getScript('/bar.js')).done(function(){ 
    // this is called when both are done. 
}); 

Kontrol dışarı Sadece bu dağınık görünüyor düşünüyorum Deferred Object ve $.when()

+0

Çok havalı. +1. '$ .when() 'hakkında henüz okumadım; Benim özel amaçlarım için 1.5.1'e erişimim yok; Şimdilik, 1.4.2'deki düşüşlere sıkıştım;) – Yahel