函数中的JavaScript函数 - 返回一个对象

时间:2012-07-18 03:30:05

标签: javascript object return

我想在函数中调用一个函数,让这个内部函数返回一个对象。我正在使用我自己创建的JSONRequest函数,所以假设请求获取了一组角色。这是代码:

(users = function(){

    this.getUserRoles = function(){

        var params = {};

        var json = new JSONRequest(function(data){

            rolesObj = data['roles'];

            return rolesObj;

        }, 'get_roles', params);

    }

});

然后我调用以下内容但它返回undefined:

var cls = new users();

alert(cls.getUserRoles().length);

2 个答案:

答案 0 :(得分:2)

ajax请求是异步的,因此您不会从它们获取返回值。但是,您可以在完成后收到回调,这样您就可以将“返回”值传递给回调。

以下是使用回调重写代码的示例:

this.getUserRoles = function(completionCallback){

    var params = {};

    var json = new JSONRequest(function(data){

        rolesObj = data['roles'];

        completionCallback(rolesObj);
        return rolesObj;

    }, 'get_roles', params);

}

然后使用它:

var cls = new users();
cls.getUserRoles(function(roles) {
    alert(roles.length);
});

一旦JSON请求完成,rolesObj就会传递给回调函数。

答案 1 :(得分:1)

您的getUserRoles函数不会返回任何内容。它调用异步JSON请求,该请求的成功回调返回一些内容。

无法在函数中生成异步请求,并使该函数同步返回请求中的值。请求将花费未知的时间,请求函数将在请求发送后立即返回。该值尚未从服务器返回。