Promise 是ES6新增的新语法,解决了回调地狱的问题。
可以把Promise看成一个状态机,初始是pending状态, 可以通过函数resolve和reject ,将状态转变为resolved或者rejected状态, 状态一旦改变就不能再次变化。
then函数会返回一个Promise实例, 并且该返回值是一个新的实例,而不是之前的实例。因为Promise规范规定除了pending状态,其他状态是不可以改变的,如果返回的是一个相同实例的话,多个then调用就失去了意义。
对于then来说,本质上可以把它看成是flatMap
1 | // 三种状态 |
