目录
promise的初衷
promise设计初衷就是解决回调地狱(回调函数层层嵌套就是回调地狱)
创建promise对象
let pro = new Promise((resolve, reject) => {
console.log(resolve);
console.log(reject);
resolve(123)
})
console.log(pro);
promise的三种状态和转换
promise有三种状态:
pending:初始化
fulfilled:成功 resolve()方法执行时
rejected:失败 reject()方法执行时
三者之间的转换
pending初始化===>fulfilled成功
pending初始化===>rejected失败
then()方法
then()方法:用于绑定处理操作后的处理程序。用于成功后 参数是回调函数 下一个then()方法的参数是上一个then()方法的返回值
let pro = new Promise((resolve, reject) => {
console.log(resolve);
console.log(reject);
resolve(123)
})
console.log(pro);
pro.then((res) => {
console.log(2);
console.log(res);
return res
}).then((res_1) => {
console.log(res_1);
}
catch()方法
catch()方法:只接受一个参数,用于处理操作异常的业务。用于失败后,参数是一个回调函数
let pro = new Promise((resolve, reject) => {
console.log(resolve);
console.log(reject);
resolve(123)
})
console.log(pro);
pro.catch(eor => {
console.log(eor);
})
promise.all()方法
promise.all()方法 接受一个数组作为参数,数组的元素是Promise实例对象,当参数中的实例对象的状态都为fulfilled时,Promise.all()才会有返回。
let pro1 = new Promise(function (resolve, reject) {
setTimeout(function () {
resolve('实例1操作成功')
}, 2000)
})
// 创建实例prom2
let pro2 = new Promise(function (resolve) {
setTimeout(function () {
resolve('实例2操作成功')
}, 1000)
})
Promise.all([pro1, pro2]).then(function (result) {
console.log(result);
})
promise.race()方法
promise.race()方法 只要有一个状态发生变化(不管是成功fulfilled还是异常rejected),它就会有返回,其他实例中在发生变化,它也不管了。
let pro3 = new Promise(function (resolve) {
setTimeout(function () {
resolve('实例1操作成功')
}, 1000)
})
// 初始化实例pro4
let pro4 = new Promise(function (resolve, reject) {
setTimeout(function () {
resolve('实例2操作失败')
}, 2000)
})
Promise.race([pro3, pro4]).then(function (result) {
console.log(result);
}).catch(function (error) {
console.log(error);
})