Promise
Promise对象用于表示一个异步操作的最终状态(成功or失败)
Promise有三种状态:
- pending:初始状态
- fulfilled:操作成功完成
- rejected:操作失败
promise.all(iterable)
返回一个promise对象,iterable中的promise全部执行成功才会返回执行成功,只要有一例失败则全部返回失败
promise.rece(iterable)
返回一个promise对象,iterable中的promise中有一例执行成功或失败,就会返回成功或失败
promise.reject(reason)
返回一个带有拒绝原因reason参数的Promise对象
Promise.reject("errorInfo").catch((value)=>{console.log(value)})
Promise.reject("errorInfo").then(function(reason) {
// 未被调用
}, function(reason) {
console.log(reason); // "errorInfo"
});
promise.resolve()
语法:
promise.resolve(value)
promise.resolve(promise)
promise.resolve(thenable)
//resolve一个value
Promise.resolve('success').then((value)=>{
console.log(value);//success
},(err)=>{
console.error(err);//不会执行
})
//resolve另一个promise对象
//会原封不动的返回传入的promise对象
let promiseIn=Promise.reject('errorInfo');
let promiseResolve=Promise.resolve(promiseIn);
promiseResolve.then((value)=>{
console.log(value);//不会执行
},(err)=>{
console.error(err);//errorInfo
})
promiseResolve.catch((err)=>{
console.log(err);//errorInfo
})
//resolve一个thenable对象(指的是具有then方法的对象),不是含有then方法的对象,会作为value传入
//会将这个对象转为promise对象,然后立即执行then方法
let thenable={
then:()=>{
console.log('thenFunction');
}
}
let p1=Promise.resolve(thenable);//thenFunction
promise.prototype.then(onFulfilled,onRejected)
promise对象返回成功执行onFulfilled方法,返回失败执行onRejected方法
promise.prototype.catch(onRejected)
promise对象只有返回失败时才会执行onRejected方法
promise.prototype.finally(onFinally)
无论promise对象返回执行成功、失败,都会执行onFinally函数
let promise=new Promise((resolve,reject)=>{
let num=Math.ceil(Math.random()*10)
if(num>5){
resolve(num);
}else{
reject(num);
}
});
promise.then((res)=>{
console.log(res)
});
promise.catch((err)=>{
console.error(err)
})