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