两种承诺链实现方式的区别

Difference between two way of promise chain implementation

本文关键字:区别 方式 实现 承诺 两种      更新时间:2023-09-26

我注意到两种承诺链:有什么区别吗?

promise1()   
  .then(promise2)
  .then(promise3)
  .then(promise4);

promise1().then(function() {
     return promise2();
   }).then(function() {
     return promise3();
   }).then(function() {
     return promise4(){
   }).then(function() {
   });

是的,有一个区别- then用结果值调用它的参数,但是您的第二个代码片段忽略了任何参数,并以零参数调用所有函数。而且,由于附加的空回调,它保证满足undefined(如果它不拒绝),与第一个代码片段相比,它使用返回值promise4(…)进行解析。

当然,第一个也更容易读

实际上,这两个代码片段在顺序方面没有区别,因为您的代码将在两个代码片段中以相同的顺序运行。

但是你的代码片段显示了一些差异。其中一个是传递参数第二个是返回结果。

考虑到第一个区别,第一个代码段虽然没有使用它,但接受了参数,而第二个代码段不是这样,因为你没有传递任何参数,也没有使用它。

最后,在考虑第二个差异时,您在第一个代码片段中没有返回任何东西,而在第二个代码片段中,除了最后一个代码片段之外,您正在针对每个then的返回语句调用函数,这导致最后返回未定义的