1、Promise构造函数:Promise(excutor){}
(1)executor函数:执行器(resolve,reject)=>{}
(2)resolve函数:内部定义成功时我们调用的函数value=>{}
(3)reject函数:内部定义失败时我们调用的函数reason=>{}
说明:executor会在Promise内部立即同步调用,异步操作在执行器中执行。
2、Promise.prototype.then方法:(onResolved,onRejected)=>{}
(1)onResolved函数:成功时回调函数(value)=>{}
(2)onRejected函数:失败时回调函数(reason)=>{}
说明:指定用于得到成功value的成功回调和用于得到失败reason的失败回调返回一个新的promise对象。
3、Promise.prototype.catch方法:(onRejected)=>{}
(1)onRejected函数:失败的回调函数(reason)=>{}
4、Promise.resolve方法:(value)=>{}
(1)value:成功的数据或promise对象
说明:返回一个成功/失败的promise对象
5、Promise.reject方法:(reason)=>{}
(1)reason:失败的原因
说明:返回一个失败的promise对象
<script type="text/javascript">
// 如果传入的参数为非Promise类型的对象,则返回的结果为成功promise对象
// 如果传入的参数为Promise对象,则参数的结果决定了resolve的结果
let p1 = Promise.resolve(521);
let p2 = Promise.resolve(new Promise((resolve,reject)=>{
reject('Error');
}))
console.log(p2);
/*如果没有运行catch则会报错:Uncaught (in promise) Error;
因为reject的状态为失败,需要reason接受失败的原因*/
p2.catch(reason=>{
console.log(reason);
})
let p3 = Promise.reject(new Promise((resolve,reject)=>{
resolve('OK');
}))
console.log(p3);
</script>
6、Promise.all方法:(promises)=>{}
(1)promises:包含n个promise的数组
说明:返回一个新的promise,只有所有的promise都成功时才成功,只要有一个失败了就直接失败
<script type="text/javascript">
let p1 = new Promise((resolve,reject)=>{
resolve('OK');
})
let p2 = Promise.resolve('Success');
let p3 = Promise.resolve('Oh Yeah');
const result = Promise.all([p1,p2,p3]);
console.log(result);
</script>
<script type="text/javascript">
let p1 = new Promise((resolve,reject)=>{
resolve('OK');
})
let p2 = Promise.reject('Error');
let p3 = Promise.resolve('Oh Yeah');
const result = Promise.all([p1,p2,p3]);
console.log(result);
</script>
7、Promise.race方法:(promises)=>{}
(1)promises:包含n个promise的数组
说明:返回一个新的promise,第一个完成的promise的结果状态就是最终的结果状态
<script type="text/javascript">
let p1 = new Promise((resolve,reject)=>{
resolve('OK');
})
let p2 = Promise.reject('Error');
let p3 = Promise.reject('Oh Yeah');
const result = Promise.race([p1,p2,p3]);
console.log(result);
</script>