FalcorJS路由器是否支持返回承诺?

时间:2015-09-06 01:36:06

标签: falcor falcor-router

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

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

1 个答案:

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