有条件的承诺链?

时间:2016-03-29 16:31:19

标签: javascript angularjs

我有一种情况,根据变量,可能会出现两种情况之一。这两种情况都会返回一个承诺,并且之后会应用完全相同的逻辑。

我想要这样的事情发生:

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

我意识到这不是有效的逻辑,但我怎么能在那些有条件的情况下完成类似的事情呢?

2 个答案:

答案 0 :(得分: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() {

});

在我眼中更具可读性。

答案 1 :(得分:2)

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

action()
.then(res => {your code})
这应该怎么做?