感觉之前对Promise的了解很浅,实际开发中也没有应用很多,最近在面试的过程中几乎是必问的问题,算是前端开发中的重点与难点,在b站学习了向军老师的关于Promise的讲解,也自己学习了一下资料,现在来做个总结。
Promise解决的痛点
ES6新增了promise作为异步编程的解决方案,在promise之前,我们使用回调函数来发送异步请求,回调函数的问题是当我们有很多请求,并且下一个请求要依赖上一个请求的结果,这样会导致我们的请求层层嵌套,使得代码非常臃肿,可读性差,容易产生bug导致所谓的回调地狱。
Promise如何处理异步
promise对象有三个状态
- pendding 初始状态
- fulfilled 已完成状态
- rejected 已拒绝状态
promise对象创建后的状态是pendding状态,之后状态只能从pendding=>fulfilled或pedding=>rejected,状态只能改变一次。
创建的promise对象的then方法接收两个回调分别是成功的回调函数与失败的回调函数对结果进行操作;
var promise = new Promise((resolve,reject)=>{
resolve(123)
}).then(res=>{
console.log(res)
},()=>{
console.log("失败")
})
API
- Promise.resolve()—创建已解决状态的promise对象 <