我正在编写一个需要相当广泛地使用getScript的引擎。为了便于使用,我将它推入自己的函数中,但现在我需要确保函数本身是同步的。不幸的是,我似乎无法让getScript等待,直到它加载的脚本在继续之前实际上完成加载。我甚至尝试在调用之前将jQuery的ajax asynch属性设置为false。我正在考虑使用jQuery的when/done协议,但似乎无法围绕将它放入函数并使函数本身同步的逻辑。任何帮助将非常感谢!同步使用getScript
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;
}
}
没有必要做'loadScript'同步。只需返回promise对象形式'$ .getScript'并让调用代码绑定回调。或者为什么你认为它必须是同步的? – 2013-02-09 00:51:24
我正在循环使用for-in循环的div的可变长度数组(根据页面的不同而不同),并对它们执行一系列指令,包括加载脚本。问题是,脚本必须在前一个完成加载和执行后加载。不幸的是,我还没有找到一种合适的方式来“等待”一个对象存在于JavaScript中。区间效果很好,除了它的所有内部都是针对div的for-in循环。 – VashGH 2013-02-09 01:44:17
你是否在每个div上应用相同的命令(我假设这是一个循环)但为每个div加载不同的脚本?你可以发布一些代码吗?使用延迟对象链接Ajax调用很容易。 – 2013-02-09 01:46:40