我可以使用一些承诺惯例最佳实践作为参考。
我的意思是,当你写作时,你可以像这样做
step1().then(step2()).then(retur ...step3())
.catch(function(err) {
console.log(err)
;});
但我认为可读方式更像
step1()
.then(function() {
return step2();
}).then(function() {
return step3()
}).catch(function(err) {
log(err);
});
有一些官方建议如何在可读性等方面更好地编写它......
答案 0 :(得分:1)
如果您已经准备好连接方法,那么创建中间闭包没有任何好处。 你的两个例子也做了完全不同的事情。你的第一个例子应该是这样的。
/codes[code[contains(., 'AP')] and code[contains(., 'BS')]]
我认为这没有任何问题。这也将使您的堆栈跟踪更具可读性。
这是因为,在这个例子中,你有一堆中间匿名函数。 因此,堆栈跟踪将包含对这些匿名函数的引用,而它们没有任何价值。
step1()
.then(step2)
.then(step3)
.catch(function(err) {
console.log(err)
;});
为了防止匿名混乱,您需要为所有匿名方法命名,如此。
step1()
.then(function(val) {
return step2(val);
}).then(function(val) {
return step3(val)
}).catch(function(err) {
log(err);
});
我在前面加上一个下划线,因为它们的名称与我们正在调用的实际方法不同。
这是一堆重复,它没有多大意义,因为_step2和step2函数完全相同。
另请注意,在您的首选示例中,您没有正确传递参数,我已经在上面添加了该逻辑,正如您所看到的,进一步增加了噪声。