有条件地链接承诺 - 如何避免代码重复?

时间:2017-06-05 00:25:31

标签: javascript promise bluebird

我有以下内容:

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

如何消除代码重复(promiseMakerB)?

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作,但是,这不一定是最易读的方式

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

答案 1 :(得分:1)

假设promiseB的每个条件中的参数相同,则首先将它存储在变量中......然后在适用的地方返回该变量

let promiseB = promiseMakerB(someLongListOfArguments);

if (someCondition) {
     return promiseMakerA().then(function() {
         return promiseB;
     });
}
else
    return promiseB;
相关问题