20200.9.24.叶梦宇proimse
function one(next){
console.log('One run start');
setTimeout(()=>{
next()
},2000)
// console.log(2);
}
function two(next){
console.log('one end');
console.log('two start');
setTimeout(()=>{
next()
},2000)
}
function three(){
console.log('two end');
console.log('three start run');
setTimeout(()=>{
console.log('比赛结束');
},2000)
}
注意:以下的调用方式就是回调地狱,如果有足够多的异步会写很多的调用传参,
最后就是实参调形参。
one( function(){
two(function(){
three()
})
})
promise管理异步进程
let pro = new Promise((resolve,rejected)=>{
reresolve(false);
// rejected('李权')
})
// pro.catch((err)=>{
// console.log(err);
// })
pro.then((data)=>{
console.log(data);
return new Promise((resolve,rejected)=>{
resolve('叶梦宇')
// rejected('李权')
})
}).then((data)=>{
console.log(data);
}).catch((data)=>{
console.log(data);
})
promise有三个状态 正在进行pending,还没有判断任务是否成功.是一个链式调用
reresolve()任务成功执行
rejected()任务执行失败.
每个promise都有then用来承接任务成功的下一个调用任务
then也两个任务成功和失败.
catch专门承接失败的值
let pro = new Promise((resolve,rejected)=>{
setTimeout(()=>{
console.log(1);
resolve()
},4000)
}).then(()=>{
return new Promise((resolve,rejected)=>{
setTimeout(()=>{
console.log(2);
resolve()
},2000)
})
}).then(()=>{
setTimeout(()=>{
console.log(3);
},1000)
})
利用promise来管理异步任务
function One(){
console.log('比赛开始');
console.log('one running');
return Promise.resolve(setTimeout(()=>{
Two()
},2000))
}
function Two(){
console.log('one end');
console.log('two start ');
return Promise.resolve(
setTimeout(()=>{
Three()
},2000)
)
}
function Three(){
console.log('two end');
console.log('three 开始');
setTimeout(()=>{
console.log('比赛结束');
},2000)
}
One()
只用一个one()就可以调用一二三
学习心得
学不懂的地方真的要开口问清楚,不能不明不白的混过去,问过之后再按自己的方法写笔记真的会记得很清楚.
评论留言