0

例では (私が知る限り、ルーターの例でいくつかの微妙な点を見逃している可能性があります)、生の値が get 関数から返されます。get 関数でコールバックまたはプロミスを返す方法はありますか? それを行う最善の方法は何ですか?

今のところ、私は Q.defer を使用していると思いますか?

4

1 に答える 1

2

Falcor Router のドキュメントの例では、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プロミスを返し、直接消費可能な値ではありません。したがって、promise 仕様に準拠していれば何でも構いません。

于 2015-09-07T23:11:10.517 に答える