一、promise的初衷:
1、实现异步操作
2、解决回调地狱
promise是一个构造函数,自身有reject、resolve、race方法,原型链上有then、catch方法。用new出来一个promise对象会自带这些方法。
1、它被设计成一个全局构造函数
2 、这个函数创建出来的对象 是一个特殊的数据容器
3、这个数据容器内部有三种状态: 等待 ==>产生的正确数据 产生了错误的数据
4、创建对象时要求传一个函数参数==>也就是在这个函数中处理耗时业务,一般用法:
new Promise((resolve,reject)=>{resolve(),reject()})
二、promise函数中的then和catch方法
初始状态:pendding ---> 成功状态:fulfilled 调用resolve
初始状态:pendding ---> 失败状态:rejected 调用reject
promise对象.then(function(res){}):执行成功
第一个then方法中的回调函数中的res代表成功或者失败(resolve、reject)函数的参数值
promise对象.catch(function(err){}):执行失败
then方法中的res参数是上个then方法的返回值
let pro1 = new Promise(function(resolve, reject) {
// resolve 成功
// reject 失败
if (1) {
// resolve("成功啦!");
resolve(2);
} else {
reject("失败啦!");
}
})
pro1.then(res => {
console.log(res);
return "我是第一个then方法的返回值"
})
.then(res => {
console.log(res);
return "我是第二个then方法的返回值"
})
.then(res => {
console.log(res);
})
.catch(err => {
console.log(err);
})
console.log(3);