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