Promise用来解决回调地狱的问题
1、promise有三个状态:(生命周期)
- pending 初始状态
- fulfilled 成功状态
- rejected 失败状态
2、promise方法
- then方法
then方法存在于所有Promise对象上,并且接收两个参数。第一个参数是Promise状态为fulfilled(成功结束)的调用函数,第二个则是状态rejected(未成功结束)的调用函数。
promise.then(res => {
console.log(res)
},err => {
console.error(err)
})
//也可以进行链式操作
promise.then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
- catch方法
promise.catch(err => {
console.log(err) })
// 等同于
promise.then(null,err => {
console.error(err)
})
- all()方法
let p1 = Promise.resolve(1), p2 = Promise.resolve(22), p3 = Promise.resolve(333);
let loading = true;
// 比方说加loading就可以加一个了 写个伪代码
Promise.all([p1,p2,p3]).then(res => {
console.log(res) // [1, 22, 333]
loading = false //伪代码
})
这里返回数据的顺序是根据传进去的promise对象的顺序,如果其中有一个reject了,后面的代码会立刻停止,并将错误信息返回到catch里
- race()方法
let p1 = Promise.resolve(1), p2 = Promise.resolve(22), p3 = Promise.resolve(333);
Promise.race([p1,p2,p3]).then(res => {
console.log(res) // 1
})
promise原理详解
Promise原理详解(一) - 知乎