我有一系列的承诺,其中一些承诺在链中传递参数,如下所示:
stepOne(argument).catch(errorHandler)
.then(stepTwo).catch(errorHandler)
.then(stepThree).catch(errorHandler)
.then(stepFour).catch(errorHandler)
...
function stepTwo(data)
{
// stuff
return promise
.then(function(data){ return Promise.resolve({arg: 'a', arg2: 'b'); }) //pass this to step three, step three does the same to four
.catch(function(err){ return Promise.reject(err); });
}
我希望能够将它与链级调用函数中的另一个参数结合起来,如下所示:
stepOne(argument).catch(errorHandler)
.then(stepTwo).catch(errorHandler)
.then(stepThree(dataFromTwo, extraArg)).catch(errorHandler)
.then(stepFour(dataFromThree, extraArg, moreArg)).catch(errorHandler)
...
目标是重用代码并避免重复。但是,无论何时我尝试这样做,我最终得到未定义的值或覆盖一个或另一组参数,我该怎么做?理想情况下,我不想仅仅为了合并参数而做出多余的承诺。