有没有办法将数据存储到变量?

我试过了:

$scope.another =
        function(){
            var new_data;
            userService.getInfo().success(function(data){
               new_data = data;
            });
            return new_data;
        };

var data = $scope.another();


但它在控制台日志中返回“ undefined”。谢谢

编辑

现在,我得到一个空数组new_data。

var new_data = [];

$scope.another =
                function(callback){
                    userService.getInfo().success(function(data){
                        paymentService.getCashierParams({ "cardNumber": data.cardNumber}).success(function(data){
                            gameService.getAllgames({ "PID":data.GetCashierParameters.PID, "limit": 6, "skinID": 1}).success(function(data) {
                                callback(data.data.GetFlashGamesResult.Data.FlashGame);
                            });
                        });
                    });
                };
          $scope.another(function(result){
                    new_data = result;
                });
                console.log(new_data);

最佳答案

您需要以不同的方式考虑这个问题。您的getInfo方法返回一个Promise。 promise的成功回调永远不会立即被调用。将来可能会调用它,但是与此同时,您的代码将继续执行,并且$scope.another的返回值将是undefined

而是将希望执行的任何逻辑放入成功回调中。

userService.getInfo().success(function (data) {
    // Do stuff with data.
});


如果您不习惯使用异步数据,这似乎很奇怪。但这比替代方案要好得多,后者在网络请求,数据库读取等完成时可能会将页面挂起许多秒钟。

如果您担心缩进,可以创建单独的函数来处理数据。

function processData(data) {
    // Process stuff...
    return data;
}

function handleData(data) {
    data = processData(data);
    console.log(data);
}

userService.getInfo().success(handleData);

10-06 02:38