2017-06-05 72 views
0

我有以下几点:有条件的链接承诺 - 如何避免代码重复?

if (someCondition) { 
    return promiseMakerA().then(function() { 
     return promiseMakerB(someLongListOfArguments); 
    }); 
} 
else 
    return promiseMakerB(someLongListOfArguments); 

我怎样才能消除这些代码的重复(promiseMakerB)?

+2

会像'回报(someCondition promiseMakerA():Promise.resolve()),然后(函数(){ 回报promiseMakerB(someLongListOfArguments); });'为你工作? –

+0

@JaromandaX - 你在一旁。随时作出答复,我会奖励 - 非常感谢。 – SB2055

+0

promiseB的每个条件中的参数是否相同?如果是这样,可以存储为变量,并返回该变量 – charlietfl

回答

3

你能做到以下几点,但是,它不一定是最可读这样做的方式

return (someCondition ? promiseMakerA(): Promise.resolve()).then(function() { 
    return promiseMakerB(someLongListOfArguments); 
}); 
1

假设参数是在每个条件promiseB它存储在一个变量第一一样的...然后返回该变量适用

let promiseB = promiseMakerB(someLongListOfArguments); 

if (someCondition) { 
    return promiseMakerA().then(function() { 
     return promiseB; 
    }); 
} 
else 
    return promiseB; 
+0

我喜欢简洁的Jaromanda的评论解决方案 - 我正在使用组合。谢谢 :) – SB2055