我在我的網頁上加載了三個腳本,並且我想在它們中的兩個完成加載後觸發一個函數。是否有可能使Head JS的ready()函數等待兩個腳本?
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()等兩個腳本加載,根據documentation(請參閱腳本組織)。
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.
// ...
});
那麼我該如何解決這個問題呢?如果我嵌套就緒方法,我可以確定我的代碼將被觸發,還是隻有當jquery在分析之前完成加載纔會觸發它?
head.ready('jquery', function() {
// Code that requires jQuery.
// ...
head.ready('analytics', function() {
// Code that requires both jQuery and Google Analytics.
// ...
});
});
另一種解決方案可能是將加載語句分成兩部分,就像這樣。但是,我仍然可以從腳本的異步加載中完全獲益,還是會在jquery和分析之前完成加載webfont?
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.
// ...
});
我不知道HeadJS劇本,但我期望這樣的技術能夠很好地處理嵌套調用。同樣在Java中'Process.join()'在多個進程中被簡單地稱爲一個接一個,因爲即使進程完成的順序不同於join()調用的順序,以前完成的進程也會只是簡單地使'join'立即返回。我期望一個'ready()'調用一個已經加載的庫來簡單地立即調用回調函數(或者在下一個tick中)。 –
他們的文檔和主頁顯示了多個等待多個腳本加載的明確示例。你在看什麼? –