我注意到两种承诺链:有什么不同吗?
promise1()
.then(promise2)
.then(promise3)
.then(promise4);
和
promise1().then(function() {
return promise2();
}).then(function() {
return promise3();
}).then(function() {
return promise4(){
}).then(function() {
});
答案 0 :(得分:3)
是的,存在差异 - then
使用结果值调用其参数,但是您的第二个片段忽略任何参数并调用所有带零参数的函数。此外,由于额外的空回调,保证与undefined
一起使用(如果它不拒绝),与使用promise4(…)
的返回值解析的第一个代码段相反。
当然,第一个也更容易阅读。
答案 1 :(得分:2)
实际上,两个片段在序列方面没有区别,因为您的代码将在两个片段中以相同的顺序运行。
但是您的片段显示有几个不同之处。其中一个是传递参数,第二个是返回当时的结果。
考虑到第一个区别,第一个片段虽然你没有使用它,但它会获取参数,而第二个片段不是这种情况,因为你没有传递任何参数也没有使用它。
最后在考虑第二个区别的时候,你没有在第一个片段中返回任何东西,而在第二个片段中,你在每个句子之间调用函数而不是最后一个,这导致在最后修复undefined。