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);提示:函数"Services“从web服务获取数据。
//但是对于第二个推送,我得到了一个空的(users = []),我猜答案应该是{ console.log:“Jay”,age:20},因为我在function.Is中使用了推送,这说明推送功能不起作用。请帮帮忙
发布于 2015-08-05 08:04:11
您的push在then promise回调函数中,该回调函数在$loaded完成所有操作后运行。
您的第一行代码立即运行并返回,这就是为什么第一次users为空的原因。
这是一幅解释承诺的漫画:
http://andyshora.com/promises-angularjs-explained-as-cartoon.html
发布于 2015-08-05 08:03:34
该服务的get方法是异步的--很明显,因为它返回一个promise对象,您可以将一个成功的回调链接到该对象,以将get函数的结果推入用户的数组中。因为异步调用在正常流程之外执行,所以第二个console.log在成功回调之前执行。
第一个回调位于成功回调中,因此它会一直执行,直到get请求完成,您将用户推入数组,这样就可以将该用户登录到数组中。
https://stackoverflow.com/questions/31821296
复制相似问题