我有一个连接几次的简单函数
return config.load()
.then(function() {
//first duplicate code block
})
.then(function() {
//the start of my unique block
return foo.bar()
.then(function(trace) {
//unique code
})
.then(function(tree) {
//more unique code
});
})
.then(function() {
//second duplicate code
})
.then(config.save)
.then(function() {
//more duplicate for part 2
})
.catch(function(e) {
//more duplicate for part 2
});
在上面看到的中间“然后”是我在两个不同情况下唯一不同的部分。我正在寻找如何重构它以保持干燥
答案 0 :(得分:5)
您可以在外面声明它们,并在promise链中引用它们
// Declare reusables
function dupe1(arg1,arg2,...,argN){...}
function dupe2(arg1,arg2,...,argN){...}
// Go about our normal business, with functions replaced with a reference
return config.load()
.then(dupe1)
.then(function() {
//the start of my unique block
return foo.bar()
.then(function(trace) {
//unique code
})
.then(function(tree) {
//more unique code
});
})
.then(dupe2)
.then(config.save)
.then(dupe2)
.catch(dupe2);