Promise
以前为了获取异步调用的结果,不得不大量使用回调函数,当需要发送多个异步请求,且每个请求之间需要相互依赖时,只能以嵌套的方式来解决。
这种编码模式的主要问题:
- 代码臃肿
- 可读性差
- 耦合度过高,可维护性差
- 代码复用性差
- 容易滋生bug
- 只能在回调里处理异常
而promise的出现,就是为了解决回调函数所引出的各种问题
什么是Promise
Promise是异步编程的一种解决方案,比传统的异步解决方案【回调函数】和【事件】更合理、更强大。
- 从语法上讲,Promise是一个对象,从它可以获取异步操作的消息
- 从本意上讲,它是承诺,承诺过一段时间会给一个结果
Promise的状态
- pending-等待态:可以迁移至fulfilled或rejected
- fulfilled-完成态:不能迁移至其他状态,必须拥有一个不可变的终值(终值即Promise被解决时传递给解决回调的值)
- rejected-拒绝态:不能迁移至其他状态,必须拥有一个不可变的拒因(拒因即Promise被拒绝时传递给异常回调的拒绝原因)