我正在编写一个需要广泛使用getScript的引擎。为了便于使用,我已经将它放入了自己的函数中,但现在我需要确保函数本身是同步的。不幸的是,我似乎不能让getScript等到它加载的脚本实际加载完成后再继续。在进行调用之前,我甚至尝试将jQuery的ajax asynch属性设置为false。我正在考虑使用jQuery的when/done协议,但我似乎不能理解将其放在函数中并使函数本身同步的逻辑。任何帮助都将不胜感激!
function loadScript(script){
//Unrelated stuff here!!!
$.when(
$.getScript(script,function(){
//Unrelated stuff here!!!
})).done(function(){
//Wait until done, then finish function
});
}
循环代码(按请求):
for (var i in divlist){
switch($("#"+divlist[i]).css({"background-color"})){
case #FFF:
loadScript(scriptlist[0],divlist[i]);
break;
case #000:
loadScript(scriptlist[2],divlist[i]);
break;
case #333:
loadScript(scriptlist[3],divlist[i]);
break;
case #777:
loadScript(scriptlist[4],divlist[i]);
break;
}
}
发布于 2013-07-27 00:22:45
这对我很有效,可能会对你有所帮助。
$.ajax({
async: false,
url: "jui/js/jquery-ui-1.8.20.min.js",
dataType: "script"
});
基本上,我只是绕过了速记符号,在async: false
中添加了
发布于 2014-10-27 21:13:47
你知道$.getScript
accepts是一个在脚本加载后同步调用的回调函数吗?
示例:
$.getScript(url,function(){
//do after loading script
});
我还有两个解决方案:一个是pure js解决方案,一个是multiple js load解决方案。
发布于 2013-02-09 07:46:30
尝试这种方法,使用延迟对象创建数组,并使用带有"apply“的$.when
var scripts = [
'src/script1.js',
'src/script2.js'
];
var queue = scripts.map(function(script) {
return $.getScript(script);
});
$.when.apply(null, queue).done(function() {
// Wait until done, then finish function
});
https://stackoverflow.com/questions/14783046
复制相似问题