【发布时间】:2014-12-12 06:20:15
【问题描述】:
在来自 Angularjs Docs 的 this example 中有一些 *magic*,我无法弄清楚。 这是一个代码:
var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123}, function() {
user.abc = true;
user.$save();
});
还有一件事让我感到困惑——当需要首先填充 user 时,我们如何在回调中引用 user 对象并获取检索到的数据。但要这样做,应该从 User.get() 返回值。
这样:
调用User.get() → 从User.get()返回 → 调用function() 回调
但是return之后就什么都不能执行了吧?
【问题讨论】:
-
这里没有魔法,用户由 get 调用填充,回调稍后发生 - 用户可以通过闭包范围在回调中访问。
-
你是对的,但你知道 User.get 会返回什么吗?对我来说似乎是一个对象。如果是这样的话,当回调被执行时将获得 abc 属性。可以在代码的任何位置故意调用回调..
-
@Guillermo。用户确实似乎是一个对象。当回调发生时,它要么改变值,要么创建用户对象的 abc 属性。
-
Really Grisha - 要理解这段代码,您必须阅读异步编码和 JavaScript 闭包范围。作为一个曾经是 C# 开发人员的人,这有点奇怪,但你会掌握它的窍门。
标签: javascript angularjs