我正在处理异步调用$.getScript
,它将加载特定页面所需的脚本。我通过 AJAX 调用获取脚本以获取我需要的脚本,然后使用$.when
函数按顺序加载它们,我不确定为什么会.done()
立即调用,而不是在脚本完全加载并放置在 DOM 中准备好使用时.
例如,AJAX 调用返回:
['js/jquery.cookie.js', 'js/leaflet.js', 'js/index.js']
使用此代码:
var loadScripts = function(callback)
{
$.getJSON('url.php', function(response)
{
$['when'].call(this, response).done(function()
{
callback();
});
});
};
通过以下方式调用它:
loadScripts(function()
{
// All scripts are loaded and ready to use
// but the callback is fired immediately
// L is undefined
var map = L.map('map-view').setView([51.505, -0.09], 13);
});
我不想使用 Head.js 或 Require.js 之类的库,我需要一个可以加载的简单脚本,并等待加载的函数就位后可以使用。请注意,脚本列表和顺序可能会发生变化,所以这样做$.when($.getScript(), $.getScript()).done()
不是我想要的。
我该如何处理?