2016-03-29 133 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}) 

這應該怎麼辦?