1. promise的几个API
(1)
(1)
([promise1,promise2,promise3])
([promise1,promise2,promise3])
2. promise的三个状态
pending,表示进行中
fulfilled也是resolved,表示成功
rejected,表示失败
的状态变化
只能从pending->resolved或者pending->rejected
promise的状态改变后就不会再次改变会一直保持这个状态,而且promise不会受到外界的影响,只会受到异步操作的结果的影响
的基本用法
new Promise((resolve,reject)=>{
if(true){
resolve(value);
}else{
reject(err);
}
}).then(
value=>{};
reason=>{};
).catch(
)
新建一个promise构造函数,函数接受一个函数作为参数,同时该函数有两个参数,reject和resolve
执行异步操作
成功执行resolve(),状态变成resolved状态
失败执行reject(),状态变成rejected状态
无论成功还是失败都可以通过.then()指定成功和失败的回调函数,catch只能调用失败的回调函数
promise是同步执行,then是异步执行
中的同步与异步
同步就是指放在主线程中执行的任务,只有主线程中上一个任务执行完毕才执行下一个同步任务
异步不是在主线程中执行,而是将其放在任务队列中执行,只有等到主线程执行完毕,任务队列中的任务才放入主线程执行
而比较重要的一点是任务队列又分为宏队列和微队列
executor是promise的执行器函数,是同步执行的函数,也就是说promise是同步,而promise的回调函数是异步
6.宏队列和微队列
宏队列:用来保存待执行的宏任务,,比如定时器、DOM回调、ajax回调
微队列:用来保存待执行的微任务,比如:promise的回调/mutationObserver的回调
执行顺序:每次取出宏任务之前要先把微任务全部取出来放到栈里面处理掉,然后再执行宏任务