Promise
Promise
Promise是一门新的技术(ES6规范),Promis是JS中进行异步编程的新解决方案(旧方案是单纯使用回调函数)
优点:
- 指定回调函数的方式更加灵活
- 支持链式调用,可以解决回调地狱问题
Promise的状态改变
promise的状态为实例对象中的一个属性[PromiseState]
1.pending(初始状态)变为resolved
2.pending(初始状态)变为rejected
说明:只有这2种,且一个promise对象只能改变一次无论变为成功还是失败都会有一个结果数据成功的结果数据一般称为value,失败的结果数据一般称为reason
Promise的工作流程
相关Api
Promise(excutor){}
- executor:(resolve,reject)=>{}
- resolve函数:内部定义成功时调用的函数value=>{}
- reject函数:内部定义失败时我们调用的函数reason=>{}
Promise.prototype.then 方法:(onResolved,onRejected)=>{}
- onResolved函数:成功的回调函数(value)=>{}
- onRejected函数:失败的回调函数(reason)=>{}
Promise.prototype.catch方法:(onRejected)=>{}
- onRejected函数:失败的回调函数(reason)=>{}
Promise.resolve 方法:(value)=>{}
- value:成功的数据或promise对象
Promise.reject方法:(reason)=>{}
- reason:失败的原因
Promise.all方法:(promise)=>{}
- promises:包含n个promise的数组
- 返回一个新的promise,只有所有promise都成功才成功,只要有一个失败就直接失败
Promise.race方法:(promise)=>{}
- promises:包含n个promise的数组
- 返回一个新的promise,第一个完成的promise的结果就是最终的结果状态
初体验
1 | //resolve、reject函数类型的数据 |
发送ajax请求
1 | const btn = document.getElementsByTagName("button"); |
async函数
函数的返回值为promise对象
promise对象的结果由async函数执行的返回值决定
1 | async function main(){ |
await表达式
- await右侧的表达式一般为promise对象,但也可以是其它的凰
- 如果表达式是promise对象,await返回的是promise成功的值
- 如果表达式是其它值,直接将此值作为await的返回值
async和await结合发送ajxa
1 | const btn = document.getElementsByTagName("button"); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 goMars的学习随记!
评论