2012-11-16 18 views
9

Web sayfamda üç komut dosyası yüklüyorum ve iki tanesi yüklenmeyi bitirdiğinde bir işlevi tetiklemek istiyorum. (Senaryo Örgütü bakınız) documentation göre, yük iki komut beklemek) (Head JS'nin ready() işlevi iki komut için beklemek mümkün mü?

head.js(
    { webfont: 'http://ajax.googleapis.com/ajax/libs/webfont/1.0.31/webfont.js' }, 
    { jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js' }, 
    { analytics: 'http://www.google-analytics.com/ga.js' } 
); 

İdeal aşağıdakileri yapabilmek istiyorum ama head.ready yapmak mümkün görünmemektedir.

head.ready('jquery', function() { 
    // Code that requires jQuery. 
}); 

// This is not supported. :-(
head.ready('jquery', 'analytics', function() { 
    // Code that requires both jQuery and Google Analytics. 
    // ... 
}); 

Bunu nasıl çözmeliyim? Hazır yöntemleri yerleştirirseniz, kodumun tetikleneceğinden emin olabilir miyim, yoksa yalnızca jquery, analizden önce yüklenmeyi tamamlarsa tetiklenir mi?

head.ready('jquery', function() { 
    // Code that requires jQuery. 
    // ... 
    head.ready('analytics', function() { 
     // Code that requires both jQuery and Google Analytics. 
     // ... 
    }); 
}); 

Yükleme ifadelerini bunun gibi iki kısma ayırmak başka bir çözüm olabilir. Yine de komut dosyalarının asenkron yüklemelerinden tam olarak faydalanacak mıyım yoksa jQuery ve analytics'den önce webfont yüklemeyi bitirecek mi? komut (hatta paralel olarak yüklü olsa da) sırayla yürütülür yana

head.js(
    { webfont: 'http://ajax.googleapis.com/ajax/libs/webfont/1.0.31/webfont.js' } 
); 

head.js(
    { jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js' }, 
    { analytics: 'http://www.google-analytics.com/ga.js' }, 
    function() { 
     // Code that requires both jQuery and Google Analytics. 
     // ... 
    } 
); 

head.ready('jquery', function() { 
    // Code that requires jQuery. 
    // ... 
}); 
+0

Ben HeadJS bilmem oldu komut dosyası için bekleyebilir ama iç içe aramaları mükemmel bir şekilde ele almak için bu tür teknikler bekliyorum. Benzer şekilde, Java 'Process.join()' da birden fazla süreçte basitçe bir-sonra--ve-olarak adlandırılır, çünkü süreç tamamlama sırası 'join() 'çağrılarının sırasından farklı olsa bile, önceden tamamlanmış süreçler basitçe 'katılma' nın hemen geri dönmesine neden olur. Zaten yüklü bir kütüphane için bir 'hazır()' çağrısı beklemeyi hemen geri çağırmak (veya bir sonraki kene). –

+1

Dokümantasyon ve ana sayfa, birden çok komut dosyasının yüklenmesini bekleyen çeşitli açık örnekleri gösterir. Ne görüyorsun? –

cevap

10

, sen "Son-in-line"

head.js(
    { webfont : 'http://ajax.googleapis.com/ajax/libs/webfont/1.0.31/webfont.js' }, 
    { jquery : 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js' }, 
    { analytics: 'http://www.google-analytics.com/ga.js' } 
); 

head.ready('analytics', function() { 
    // when this triggers, webfont & jquery will have finished loading too 
}); 
+0

Kelimeleri son derece doğru bir şekilde yakaladınız: "Paralel olarak yükleniyorlar ancak sırayla çalışıyorlar". Senin için +1. – iMatoria

İlgili konular