首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >同步使用getScript

同步使用getScript
EN

Stack Overflow用户
提问于 2013-02-09 07:29:32
回答 7查看 31.7K关注 0票数 23

我正在编写一个需要广泛使用getScript的引擎。为了便于使用,我已经将它放入了自己的函数中,但现在我需要确保函数本身是同步的。不幸的是,我似乎不能让getScript等到它加载的脚本实际加载完成后再继续。在进行调用之前,我甚至尝试将jQuery的ajax asynch属性设置为false。我正在考虑使用jQuery的when/done协议,但我似乎不能理解将其放在函数中并使函数本身同步的逻辑。任何帮助都将不胜感激!

代码语言:javascript
复制
function loadScript(script){
//Unrelated stuff here!!!
$.when(
$.getScript(script,function(){
    //Unrelated stuff here!!!
})).done(function(){
    //Wait until done, then finish function
});
}

循环代码(按请求):

代码语言:javascript
复制
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;
    }
}
EN

回答 7

Stack Overflow用户

发布于 2013-07-27 00:22:45

这对我很有效,可能会对你有所帮助。

代码语言:javascript
复制
$.ajax({
    async: false,
    url: "jui/js/jquery-ui-1.8.20.min.js",
    dataType: "script"
});

基本上,我只是绕过了速记符号,在async: false中添加了

票数 30
EN

Stack Overflow用户

发布于 2014-10-27 21:13:47

你知道$.getScript accepts是一个在脚本加载后同步调用的回调函数吗?

示例:

代码语言:javascript
复制
$.getScript(url,function(){
//do after loading script
});

我还有两个解决方案:一个是pure js解决方案,一个是multiple js load解决方案。

票数 6
EN

Stack Overflow用户

发布于 2013-02-09 07:46:30

尝试这种方法,使用延迟对象创建数组,并使用带有"apply“的$.when

代码语言:javascript
复制
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
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14783046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档