Promise 是ES6新增的一个语法,它是一个类,所以需要使用 new Promise的方式来创建
Promise里一般有三个回调函数,一个是包含了resolve 和 reject 的箭头函数,这个称为executor,在new Promise之后这个会自动执行,第二个是resolve函数,第三个是reject函数
三个函数对应着Promise的三种状态,在executor函数里,没执行resolve和reject时的状态称为 待定状态(pending)
在执行了resolve函数之后,Promise的状态就是 已兑现(fulfilled)
在执行了reject函数之后,Promise的状态就是 已拒绝(rejected)
在Promise里,只能执行reject 或 resolve函数,两个不能同时执行
Promise的then方法里也传入两个回调函数,当executor里的resolve被执行的时候会自动执行第一个回调函数
当executor里的reject被执行的时候会自动执行then里的第二个回调函数
在执行了resolve方法之后,会自动执行then里的第一个回调函数,resolve方法里可以传入参数,该参数可以被then方法里的函数接收
在执行了reject方法之后,会自动执行then里的第而个回调函数,reject方法里可以传入参数,该参数可以被then方法里的函数接收
resolve里也可以传入 Promise,当传入了Promise之后,Promise的状态是由传入的Promise决定,所以当传入的Promise没有使用resolve方法时,状态不是 fulfilled,而是pending
代码如下
最终打印的结果为