2017-06-05 73 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