1、实现异步操作
2、解决回调地狱
promise是一个构造函数,自身有reject、resolve、race方法,原型链上有then、catch方法。用new出来一个promise对象会自带这些方法。
1、它被设计成一个全局构造函数
2 、这个函数创建出来的对象 是一个特殊的数据容器
3、这个数据容器内部有三种状态: 等待 ==>产生的正确数据 产生了错误的数据
4、创建对象时要求传一个函数参数==>也就是在这个函数中处理耗时业务,一般用法:
new Promise((resolve,reject)=>{resolve(),reject()})
初始状态: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);