2016-03-29 135 views
0

我有一种情况,取决于两种情况之一可能会发生变化。这两种情况都会返回一个承诺,并在之后应用完全相同的逻辑。有条件承诺链接?

我想是这样的情况发生:

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

我知道这不是有效的逻辑,但我怎么能完成类似的东西在那里我。然后在这两个条件的?

回答

5

您可以在同一行这样做,因为在你的问题的格式暗示:

(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确实 - 这就是为什么我把它作为一个单独的部分添加它,也几乎添加了一个评论关于它偏离到舆论领土:)我不会太担心非易失变量vs可读性 - 如果它们是不必要的,优化器将照顾他们。 –

+0

完美! – Crhistian

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

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

这应该怎么办?