Promise用来解决异步编程的问题 把异步请求改成同步写法
promise是一个构造函数,通过new创建promose实例
构造函数的参数是一个回调函数
new Promise(回调函数) 回调函数有两个参数
-
- 异步请求成功执行resolve
-
- 异步请求失败执行reject
有三种状态
- 1.pending(初始状态)
- 2.fulfilled(已成功)
- 3.rejected(已失败)
状态改变只有两种结果 成功或者失败 一旦状态改变 就不能再更改
Promise处理错误的方式有两种
- 第一种在then中传递两个回调
- 第二个回调是错误回调
第二种方式是通过catch方式来实现
Promise常用的API
- 有then()处理回调函数
- catch()捕获异常
- Promose.all() 处理多个Promise对象,所有的请求都成功才成功
- Promise.race() 处理多个Promise对象,有一个成功就成功
var p = new Promise((resolve,reject)=>{
异步代码
resolve(结果) or reject(结果)
})
模拟异步请求
new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(123)
},1000)
}).then(res=>{
console.log(res);
return 345
}).then(res1=>{
console.log(res1);
}).catch((err)=>{
console.log(err,0);
})
三个异步都都变成fullfilled Promise.all([异步1,异步2,异步3])变成fullfilled
Promise.all([异步1, 异步2, 异步3]).then((res) => {
})
Promise.race([异步1, 异步2, 异步3]).then((res) => {
})