const pro = new Promise((resolve,reject)=> {
未决阶段处理
通过调用resolve函数将promise推向已决阶段的resolve
通过调用reject函数将将promise推向已决阶段的rejected
resolve和reject均可以传递最多一个参数,表示推向该状态的数据
});
pro.then(data => {
thenable函数,如果当前的promise已经是resolved状态,该函数会立即执行
如果当前函数是未决阶段,则该函数会加入作业队列等待到达resolved状态后立即执行
data状态数据
},err => {
catchable函数,如果当前promise已经是rejected状态,则该函数立即执行
如果当前是未决阶段,则该函数会加入作业队列等待到达rejected状态后立即执行
err为状态数据
});
细节:
1、未决阶段的处理函数是同步的,会立即执行。
2、thenable和catchable函数是异步的,就算是立即执行,也会加入到事件队列中等待执行,并且加入的队列是微队列。
3、pro.then可以只添加thenable函数,pro.catch可以单独加catchable函数。
4、在未决阶段处理函数中,如果发生未捕获的错误,会自动将状态推向rejected,并且被catchable捕获。
5、一旦推向已决阶段,无法在对状态做任何改变。