JS Promises返回

时间:2017-05-16 08:41:39

标签: javascript promise

我正在开发JS承诺而且我有一个疑问,我已经提到了很多答案,但我还没有理解以下代码行之间的区别。你能救我吗?

提前致谢

// Case 1
firstPromise()
  .then(() => {
    return secondPromise();
  })
  .then()...

// Case 2
firstPromise()
  .then(() => {
    secondPromise();
  })
  .then()...

在第一种情况下,它返回第二个promise,在第二种情况下它只是执行。流程中的结果是什么?

1 个答案:

答案 0 :(得分:4)

第一个产生第一个then的结果取决于secondPromise的结果,第二个没有。

then创造了新的承诺。该承诺将根据then回调的返回值

解决/拒绝
  • 如果then返回 thenable 值(例如另一个承诺),则then的承诺是“奴役”的,并且当该可解决或当那个人拒绝时拒绝。
  • 如果then回调返回一个不可用的值,则使用该值解析承诺。

在您的第一个示例中,then回调返回第二个承诺,因此其承诺从属于secondPromise的承诺。在第二个示例中,您没有返回任何内容,因此调用then回调的结果是值undefined,因此then的承诺将使用值{{1 }}