什么是ES6 Promise相当于jQuery Deferred的'always`?

use*_*596 25 javascript jquery es6-promise

我有以下内容:

getUser("foo").then(handleSuccess, handleError).always(tidyUp);
Run Code Online (Sandbox Code Playgroud)

getUser 返回一个jQuery Deferred对象.

我从这篇文章中了解到我可以将Deferred对象转换为本机Promise Promise.resolve,所以我可以写

Promise.resolve(getUser("foo"))
  .then(handleSuccess)
  .catch(handleError)
Run Code Online (Sandbox Code Playgroud)

虽然Promise API没有提供always方法,所以我想知道应该如何处理它.

是这样的吗?

 Promise.resolve(getUser("foo"))
  .then(handleSuccess)
  .then(tidyUp)
  .catch(handleError)
  .then(tidyUp)
Run Code Online (Sandbox Code Playgroud)

Ole*_*nko 20

我认为您正在寻找以下内容:

 Promise.resolve(getUser("foo"))
  .then(handleSuccess, handleError)
  .then(tidyUp)
Run Code Online (Sandbox Code Playgroud)

tidyUp将永远被调用.有关完整示例,请参阅以下jsbin:http://jsbin.com/lujubu/edit?html,js,console,output

  • 是的,这会有效.你也让我意识到我也可以做`Promise.resolve(getUser("foo")).然后(handleSuccess).catch(handleError).then(tidyUp)`,即保持`catch`. (4认同)