.then()方法返回的promise对象的目的是什么?

dfi*_*dfi 1 javascript asynchronous promise es6-promise

我在多个网站上看过,promise.prototype中的.then()方法返回一个promise.不幸的是,没有消息来源描述这背后的原因.

then()方法返回一个Promise.它最多需要两个参数:Promise的成功和失败案例的回调函数. - developer.mozilla.com

为什么/何时需要此返回的promise对象,此promise对象与原始对象的关系如何.

非常感谢您的帮助.

Fab*_*ien 5

承诺是异步执行的,你永远不知道then()将被执行的时间.

并且promise可以返回一个promise,这允许您在单行代码中链接异步事件处理.

Mozilla给出的示例代码:

doSomething().then(function(result) {
  return doSomethingElse(result);
})
.then(function(newResult) {
  return doThirdThing(newResult);
})
.then(function(finalResult) {
  console.log('Got the final result: ' + finalResult);
})
.catch(failureCallback);
Run Code Online (Sandbox Code Playgroud)

它避免了"厄运金字塔":

doSomething(function(result) {
  doSomethingElse(result, function(newResult) {
    doThirdThing(newResult, function(finalResult) {
      console.log('Got the final result: ' + finalResult);
    }, failureCallback);
  }, failureCallback);
}, failureCallback);
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises