个人感觉讲的比较好的,忘记了可以反复听~忘记了主要是写的少~忘了就敲一敲吧
常见的异步:Ajax和定时器
Promise是一个类,构造函数,参数接2个行参
Promise是有状态的,前端可以打印查看
resolve
const p1 = new Promise((resolve,reject)=>{
resolve("P1 任务成功得到的数据");
})
p1.then(data=>{
console.log(data);
}).catch(err =>{
console.log(err);
})
//打印为P1 任务成功得到的数据
reject
const p2 = new Promise((resolve,reject)=>{
reject("P2 任务失败得到的数据")
})
p2.then(data=>{
console.log(data);
}).catch(err =>{
console.log(err);
})
// 打印为P2 任务失败得到的数据
2 个异步任务
新的promise写到then里,第二个then处理第一个then种promise返回的对象
const p3 = new Promise((resolve,reject)=>{
resolve("P3 任务成功得到的数据")
})
p3.then(data=>{
console.log(data);
return new Promise((resolve,reject)=>{
resolve("P4 任务成功得到的数据");
})
}).then(data=>{
console.log(data);
})
// 打印为
// P3 任务成功得到的数据
// P4 任务成功得到的数据
2个异步任务,第一个出错用catch
const p5 = new Promise((resolve,reject)=>{
reject("P5 任务失败得到的数据")
})
p5.then(data=>{
return new Promise((resolve,reject)=>{
resolve("P6 任务成功得到的数据");
})
})
.then(data=>{
console.log(data);
})
.catch(err=>{
console.log(err)
})
//打印为P5 任务失败得到的数据
2个异步任务,失败利用err(如果有err,就不会走catch)
const p5 = new Promise((resolve,reject)=>{
reject("P5 任务失败得到的数据")
})
p5.then(data=>{
return new Promise((resolve,reject)=>{
resolve("P6 任务成功得到的数据");
})
},err => {
console.log(err);
})
.then(data=>{
console.log(data);
})
//打印结果为: P5 任务失败得到的数据
Async&await
// 准备一个返回promise的对象函数
function asyncTask () {
return new Promise((resolve,reject)=>{
const isSuccess = true;
if(isSuccess){
resolve("成功")
}else{
reject("失败")
}
})
}
// 为使用await的函数添加async
async function main() {
const data = await asyncTask();
console.log(data);
}