AngularJS变量范围,JavaScript变量范围

时间:2015-08-04 23:58:55

标签: javascript angularjs variables scope

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是推功能不起作用的。请帮助

2 个答案:

答案 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请求完成后你将用户推入数组,这样就可以将用户记录在数组中。