2016-03-29 29 views
0

私は状況に応じて、2つの状況のいずれかが発生する可能性があります。これらの状況はどちらも約束を返し、後で全く同じロジックを適用します。条件付きプロミスチェーニング?

私が起こるために、このような何かをしたい:

userisBuyer ? Order.Create : Order.Create.As.Buyer 
    .then //do same stuff for both 

私は、これは有効なロジックではありません実現が、私は条件付きでそれらの両方に.thenどこか私は似たような達成だろうか?

答えて

5

あなたの質問形式での暗示としてあなたは、1行で行うことができます。

(userisBuyer ? Order.Create() : Order.Create.As.Buyer()).then(function() { 
    //do same stuff for both 
}); 

をしかし、あなたが本当にしたいですか?

var createMethod = userisBuyer ? Order.Create : Order.Create.As.Buyer; 
createMethod().then(function() { 

}); 

私の目にははるかに読みやすい。

+0

私は自分の最初のスニペット(これも不要な変数を作成しません)の読みやすさのファンです。 – Adam

+0

@Adam確かに - 私はそれを別のセクションとして追加しました。また、それについてのコメントもほとんどコメントされました:)私は不必要な変数と読みやすさについてあまり心配しません。彼らの世話をする。 –

+0

これは完璧です! – Crhistian

2
let action = userisBuyer ? Order.Create : Order.Create.As.Buyer; 

action() 
.then(res => {your code}) 

これはすべきですか?