首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态加载js模块,并提供对内部函数的即时访问。

动态加载js模块,并提供对内部函数的即时访问。
EN

Stack Overflow用户
提问于 2012-08-07 05:05:26
回答 1查看 140关注 0票数 1

我想使用$.getScript为javascript文件创建一个模块加载器,但是由于脚本的加载是异步的,所以当我将模块的函数调用放入文档中时,它们可能会在模块加载之前被调用。有没有什么方法可以避免这种情况,比如让函数调用保持到模块成功加载?

framework.core.js:

代码语言:javascript
复制
var Framework = $.extend(Framework, Framework.Core = { 
    modules: [ 
        'Module1', 
        'Module2'
    ], 
    init: function () { 
        $.each(modules, function (index, value) {  
            $.getScript('framework.' + value.toLowerCase() + '.js', function () { 
            }); 
        }); 
    }   

}); 
Framework.Core.init();

site.html:

代码语言:javascript
复制
<html>
    <head>
        <script src="framework.core.js"></script>
        <script>Framework.Module1.functionCall();</script>  // Call a function independent of the completion of the framework.core.js loader
    </head>
... 
EN

回答 1

Stack Overflow用户

发布于 2012-08-07 05:42:42

您将需要打开success回调,以使依赖函数与其挂钩。您将无法延迟执行以下函数以等待模块(除非您希望通过document.write插入脚本),因此回调是必要的。最好是将Deferred对象(由ajax函数返回)公开即可。此外,您根本不应该对该任务使用jQuery.getScript/,因为它会阻止缓存。

代码语言:javascript
复制
var Framework = $.extend(Framework, Framework.Core = {
// The "Core" property seems pretty useless, by the way ^^
    modules: [ 
        'Module1', 
        'Module2'
    ],
    loads: {},
    init: function () { 
        $.each(this.modules, function(index, value) {  
            this.loads[value] = $.ajax({
                url: 'framework.' + value.toLowerCase() + '.js',
                cache:true,
                dataType:"script"
            }); 
        }); 
    }   

}); 
Framework.init();

代码语言:javascript
复制
<html>
    <head>
        <script src="framework.core.js"></script>
        <script>Framework.loads.Module1.then(function() {
            functionCall();
        }); // Call a function as soon as the module is loaded
        </script>
    </head>
... 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11835914

复制
相关文章

相似问题

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