AngularJS变量范围,JavaScript变量范围

AngularJS变量范围,JavaScript变量范围,javascript,angularjs,variables,scope,Javascript,Angularjs,Variables,Scope,var用户=[] 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服务获取it数据 /

var用户=[]

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服务获取it数据


//但是我在第二个console.log中得到一个空的(users=[]),我想答案应该是[{name:“Jay”,age:20}],因为我在函数中使用了push。这是因为push函数不起作用。请帮助

服务的get方法是异步的,因为它返回一个promise对象,您可以将成功回调链接到该对象,以将get函数的结果推送到用户的数组中。因为异步调用在正常流之外执行,所以在成功回调之前执行第二个console.log


第一个回调在成功回调中,因此它将一直执行,直到get请求完成并且您将用户推入数组之后,这样就可以将用户记录到数组中。

您的
推送
中,然后
承诺回调将在
$loaded
完成任何操作时运行

第一行代码立即运行并返回,这就是为什么
users
第一次为空

下面是一幅解释承诺的漫画:


你们有什么建议?你们想解决什么问题?您正在正确获取您的用户。