RequireJS模块的回调依赖项

时间:2012-12-13 15:56:36

标签: javascript requirejs

我们正在构建使用RequireJS进行模块化开发/依赖关系管理的Web应用程序 我们采取以下措施:

<script data-main="js/main" src="js/libs/require/require.js"></script>

Web应用程序还使用与大型机系统通信所需的第三方小程序。 applet具有一个回调函数,该函数在初始化与api通信的api后执行,api对象作为参数传入。 例如

/*
 * This function is invoked automatically after the Reflection session has 
 * completed its initialization. A reference to the JavaScript API is passed
 * in as a parameter.
 */
 function jsapiInitialized( api ) {

    return api;

 }  

基本上,上述内容需要是应用程序中许多模块的依赖项。

如何使上述函数成为模块依赖项,因此api对象可用于需要它的模块?

1 个答案:

答案 0 :(得分:3)

您似乎希望为API使用类似define方法的异步方法。要使用require.js,您需要create一个小插件。因此,您将拥有以下文件:

1)myapi.js (API模拟文件)

// this is actually simulation of your third party code
setTimeout(function() {
    if(typeof jsapiInitialized === 'function') jsapiInitialized('hello!');
}, 1000);

2)myplugin.js (处理API回调的插件)

define(function(){
    return {
        load : function(name, req, onLoad, config){
            window.jsapiInitialized = function(api) {
                onLoad(api);
            };
            require([name]);
        }
    };
});

3)main.js (测试你的插件)

require(['myplugin!myapi'], function(api){
    alert(api);
});

(其中“myapi”可以是您真实API脚本的路径)