es6的promis
当有多个异步函数的时候
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
promise有三个状态 正在进行pending,还没有判断任务是否成功.是一个链式调用
reresolve()任务成功执行
rejected()任务执行失败.
每个promise都有then用来承接任务成功的下一个调用任务
then也两个任务成功和失败.
catch专门承接失败的值
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来管理多个异步任务
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()就可以调用一二三
总结
promise有三个状态 正在进行pending,还没有判断任务是否成功.是一个链式调用
reresolve()任务成功执行
rejected()任务执行失败.
每个promise都有then用来承接任务成功的下一个调用任务
then也两个任务成功和失败.
catch专门承接失败的值