0

在示例中(据我所知,也许我错过了路由器示例中的一些微妙之处),原始值是从 get 函数返回的。有没有办法在 get 函数中返回回调或承诺?最好的方法是什么?

现在,我猜我使用 Q.defer?

4

1 回答 1

2

Falcor 路由器文档的示例使用了 Promise 。例如:

{
    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正在返回一个承诺,而不是直接消耗的值。所以任何符合承诺规范的东西都可以。

于 2015-09-07T23:11:10.517 回答