首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS变量作用域,JavaScript变量作用域

AngularJS变量作用域,JavaScript变量作用域
EN

Stack Overflow用户
提问于 2015-08-05 07:58:55
回答 2查看 28关注 0票数 1

var用户= [];

代码语言:javascript
复制
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);

提示:函数"Services“从web服务获取数据。

//但是对于第二个推送,我得到了一个空的(users = []),我猜答案应该是{ console.log:“Jay”,age:20},因为我在function.Is中使用了推送,这说明推送功能不起作用。请帮帮忙

EN

回答 2

Stack Overflow用户

发布于 2015-08-05 08:04:11

您的pushthen promise回调函数中,该回调函数在$loaded完成所有操作后运行。

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

这是一幅解释承诺的漫画:

http://andyshora.com/promises-angularjs-explained-as-cartoon.html

票数 1
EN

Stack Overflow用户

发布于 2015-08-05 08:03:34

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

第一个回调位于成功回调中,因此它会一直执行,直到get请求完成,您将用户推入数组,这样就可以将该用户登录到数组中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31821296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档