Promise笔记
·
目录
promise的API
1.resolve
let p1 = Promise.resolve(521);
//如果传入的参数为 非promise类型的对象,则返回的结果为成功promise对象
//如果传入的参数为 Promise对象,则参数的结果决定了resolve 的结果
2.reject
let ps = Pomise.reject(new Promise((resolve,reject)=>{
resolve('ok');
}))
//如果传入的参数为 非promise类型的对象,则返回的结果为失败promise对象
//如果传入的参数为 Promise对象,则参数的结果决定了resolve 的结果
3.reace
let p1 = new Promise((resolve,reject)=>{
resolve('ok');
})
let p2 = Promise.resolve('Success')
let p3 = Promise.resolve('Oh Year');
//第一个返回啥,结果就是啥
const result = Promise.race([p1,p2,p3]);
console.log(result)
4.all
let p1 = new Promise((resolve,reject)=>{
resolve('ok');
})
let p2 = Promise.resolve('Success')
let p3 = Promise.resolve('Oh Year')
//所有成功,才返回成功
const result = Promise.all([p1,p2,p3]);
console.log(result);
promise的使用
1.执行多个回调
let p = new Promise((resolve, reject) => {
resolve('OK');
});
p.then(value=>{
console.log(value);
})
p.then(value=>{
alert(value)
})
2.promise串联多个操作任务
let p = new Promise ((resolve,reject)=>{
setTimeout(()=>{
resolve('OK')
},1000);
});
p.then(value=>{
return new Promise((resolve, reject)=>{
resolve("success");
});
}).then(value => {
console.log(value)
}).then(value=>{
console.log(value)
})
//then的value由前一个的返回值决堤,所以第二个打印undifined
3.异常穿透现象
let p = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('ok');
},1000);
});
p.then(value => {
// console.log(111);
throw'失败拉';
}).then(value=>{
console.log(222);
}).then(value=>{
console.log(333);
}).catch(reason => {
console.log(reason);
})
async与await
1.async
//async函数的返回对象是一个Promise对象
async function main(){
//1.如果返回值是一个非Promise类型数据,返回成功对象,成功值就是返回值
// return 521;
//2.如果返回是一个promise对象,就有这个promise对象决定
return new promise((resolve,reject)=>
{
reject()
})
}
let result = main();
console.log(result);
2.await
async function main(){
let p = new Promise((resolve, reject) =>{
// resolve('ok');
reject('Error')
})
//1右侧为promise的情况
// let res = await p;
// console.log(res)
//2右侧为其它类型数据
// let res2 = await 20;
// console.log(res2);
//3如果promise是失败的状态
try{
let res3 = await p;
}catch(e){
console.log(e);
}
}
main();
更多推荐



所有评论(0)