var users = [];
Services.get(value).$loaded().then(function(data){
users.push(data);
// Taken data = [{name:"Jay",age:20}];
console.log(users) // I get users = [{name:"Jay",age:20}]
});
console.log(users);
提示:“服务”功能是从Web服务获取数据。
//但我得到第二个console.log的空(users = []),我想答案应该是[{name:“Jay”,年龄:20}]因为我在函数中使用了push是推功能不起作用的。请帮助
答案 0 :(得分:1)
您的min_allowable(p) <= sum(over r) X_r_p <= max_allowable(p) for any program type p
位于push
承诺回调中,该回调在then
完成后运行。
您的第一行代码立即运行,并返回第一次$loaded
为空的原因。
这是一张解释承诺的漫画:
http://andyshora.com/promises-angularjs-explained-as-cartoon.html
答案 1 :(得分:0)
服务的get方法是异步的 - 很明显,因为它返回一个promise对象,您将成功回调链接到该对象以将get函数的结果推送到用户的数组中。因为异步调用在正常流程之外执行,所以第二个console.log在成功回调之前执行。
第一个回调是在成功回调中,所以它一直执行,直到get请求完成后你将用户推入数组,这样就可以将用户记录在数组中。