在示例中(据我所知,也许我错过了路由器示例中的一些细微之处),从get函数返回原始值。有没有办法在get函数中返回回调或承诺?最好的方法是什么?
现在,我猜我使用Q.defer?
答案 0 :(得分:2)
Falcor路由器文档中的示例使用promises。例如:
{
route: 'user.["name", "surname"]',
get: function(pathSet) {
// pathSet is ["user", ["name"]] or ["user", ["surname"]] or ["user", ["name", "surname"]]
if (this.userId == null) {
throw new Error("not authorized");
}
return userService.
get(this.userId).
then(function(user) {
// pathSet[1] is ["name"] or ["surname"] or ["name", "surname"]
return pathSet[1].map(function(key) {
return { path: ["user", key], value: user[key] };
});
});
}
}
userService.get
正在返回一个承诺,而不是直接消耗的价值。所以任何符合诺言规范的事情都可以。