在 JS 中模块化 API 时没有返回数据

No data returned when modularizing API in JS

我正在尝试通过创建一个 API 模块来模块化我的 JS 代码,我可以在其中使用 Liferay 的 AUI ajax 功能检索所有需要的数据。目前我有这个:

var API = (function() {
        var getAsistencias = function(idEdicion, periodo) {

            AUI().use('aui-io-request', function(A) {
                A.io.request('myapiaddress', {
                    method : 'post',
                    dataType : 'json',
                    data : {
                        _mypackage_WAR_myportlet_periodo : periodo,
                        idEdicion : idEdicion
                    },
                    on : {
                        success : function() {
                            data = this.get('responseData');
                            return data;
                        }
                    }
                });
            });
        };
        return {
            getAsistencias : getAsistencias,
        }
})();

然而当我这样称呼它时:

var data = API.getAsistencias(id, dataInfo);

数据始终为空,即使在 onSuccess 方法中它实际上正确地检索了数据。我做错了什么?

还有我该如何管理错误?

这里的主要问题是你没有从你的函数中返回任何东西。应该是这样的

var API = (function() {
    var getAsistencias = function(idEdicion, periodo,callback) {

        AUI().use('aui-io-request', function(A) {
            A.io.request('myapiaddress', {
                method : 'post',
                dataType : 'json',
                data : {
                    _mypackage_WAR_myportlet_periodo : periodo,
                    idEdicion : idEdicion
                },
                on : {
                    success : function() {
                        data = this.get('responseData');
                        callback(data);
                    }
                }
            });
        });
    };
    return {
      getAsistencias:getAsistencias
    };
})();
API.getAsistencias(id,periodo,function(data){
 Console.log(data);
 //Do something here
});