有没有办法将数据存储到变量?
我试过了:
$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);