1.Promise对象
1.promise的两个状态
//new Promise((形参1,形参2)=>{})这里的形参名字可以随意,但是尽量就用resolve reject原因在我另一篇[ES6-day03(三)](https://editor.csdn.net/md/?articleId=105999227)里有说明
let promise = new Promise((resolve,reject) => {
// resolve reject 是两个函数,可以改变promise对象的状态
// resolve() promise状态就是成功的
// reject() promise状态就是失败
if(3>5){
resolve('hello'); //fulfilled
}else{
reject('fail'); //rejected
}
});
// console.log(promise);
这里很明显3>5是不成立的,所以promise对象的状态就是失败,失败就会执行reject();
如果成功的话会执行resolve();
2.promise的then,catch,finally方法
// 获取resolve函数,reject函数传递出去的数据
// then是promise对象的方法,参数函数,代表promise对象成功状态的回调函数
// catch是promise对象的方法,参数函数,代表promise对象失败状态的回调函数
// finally是promise对象的方法,参数函数,代表promise对象无论成功还是失败都会调用的回调函数
promise.then((res)=>{
console.log(res,'----');
}).catch((err)=>{
console.log(err,'++++');
}).finally(()=>{
console.log('最终会调用');
})
这里的then是当promise对象状态为成功然后执行resolve()时,then中写的函数会执行,同理catch是当promise对象状态为失败然后执行reject()时执行的.
2.Promise对象调用ajax函数
let promise = new Promise ((resolve,reject)=>{
$.ajax({
url:'http://39.97.103.246:8888/manager/category/findAllCategory',
method:'get',
data:{},
success(res){
resolve(res);
},
error(err){
reject(err);
}
})
})
promise.then((response)=>{
console.log(response);
}).catch((error)=>{
console.log(error);
})
从后台接口请求数据成功时执行then,不成功执行catch.