Promise

以前为了获取异步调用的结果,不得不大量使用回调函数,当需要发送多个异步请求,且每个请求之间需要相互依赖时,只能以嵌套的方式来解决。

这种编码模式的主要问题:

  • 代码臃肿
  • 可读性差
  • 耦合度过高,可维护性差
  • 代码复用性差
  • 容易滋生bug
  • 只能在回调里处理异常

而promise的出现,就是为了解决回调函数所引出的各种问题

什么是Promise

Promise是异步编程的一种解决方案,比传统的异步解决方案【回调函数】和【事件】更合理、更强大。

  • 从语法上讲,Promise是一个对象,从它可以获取异步操作的消息
  • 从本意上讲,它是承诺,承诺过一段时间会给一个结果

Promise的状态

  • pending-等待态:可以迁移至fulfilled或rejected
  • fulfilled-完成态:不能迁移至其他状态,必须拥有一个不可变的终值(终值即Promise被解决时传递给解决回调的值)
  • rejected-拒绝态:不能迁移至其他状态,必须拥有一个不可变的拒因(拒因即Promise被拒绝时传递给异常回调的拒绝原因)