如何用then / catch“最终”承诺?

时间:2019-05-03 09:10:52

标签: javascript

如何最终兑现承诺?

我可以添加一个与之等效的东西吗?

functionReturningPromise()
   .then(success => {})
   .catch(error => {})

还是我应该这样做(甚至可以按预期工作)?

functionReturningPromise()
   .then(success => {},error => {}).then(() => { /* finally code */ })

3 个答案:

答案 0 :(得分:1)

您可以使用

.finally()

示例:

functionReturningPromise()
.then(data=>console.log(data))
.catch(error=>console.log(error))
.finally(()=>console.log("FINISH"))

最后被称为总是

答案 1 :(得分:0)

您可以通过两种方式执行此操作:

  1. 最终从Promise.prototype.finally()起使用
yourPromiseFunction
  .then(function(json) { /* process your JSON further */ })
  .catch(function(error) { console.log(error); /* this line can also throw, e.g. when console = {} */ })
  .finally(function() { console.log("finally") });
  1. 或者您可以在catch()之后添加一个额外的then()以最终在所有浏览器中完成。

示例:

yourPromiseFunction.then(() => console.log('Resolved'))
            .catch(() => console.log('Failed'))
            .then(() => console.log('This is your finally'));

答案 2 :(得分:0)

是的,终于可以兑现承诺了。

示例:

internal/modules/cjs/loader.js:613
    throw err;
    ^

Error: Cannot find module 'sdk-conf'

有关更多参考,请参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/finally