课程名称:毕业一课通,从开题到答辩高效完成
课程章节:3-17 async函数讲解
主讲老师:然冬
课程内容:
async函数
await
课程收货:
回调地狱 => promise的链式回调地狱 => async await 的函数请求。
await使用时一定要接async关键字,等一个async函数的promise返回请求。
代码演示:
const Koa = require('koa')
const app = new Koa()
// const getYearByTimeStamp = require('./helpers/utils/index')
// console.log(getYearByTimeStamp(new Date().getTime()))
// console.log(utils)
// 开启一个http服务
// 接受http请求 并做处理,处理完响应
// https 默认端口 443
// context 上下文 当前请求的相关信息都在里面
app.use(async(context, next) =>{
console.log(1);
log(startTime);
await next();
console.log(4);
log(endTime);
});
app.use(async(context, next) =>{
console.log(2);
await next();
console.log(5);
});
app.use(async(context, next) =>{
console.log(3);
await next();
console.log(6);
});
app.listen(3000, () =>{
console.log('启动成功')
})
console.log('112233')
//async-await
// const fn2 = async () =>{
// return 1;
// }
// console.log(fn())
// fn().then((res) =>{
// return new Promise((resolve,reject) =>{
// resolve(1);
// })
// })
// fn().then((res))
// const fn = async function (){
// }
// promises
// 回调函数
// 一个接口,要拿到数据,跑5个前置接口
// const request = (arg ,cb ) =>{
// setTimeout(() => {
// console.log(arg);
// cb(arg + 1);
// }, 1000);
// }
// request(1,function(res1){
// request(res1,function(res2){
// request(res2,function(res3){
// request(res3,function(res4){
// request(res4,function(res5){
// // 回调地狱
// console.log('res',res5);
// })
// })
// })
// })
// })
const request = (arg,isReject) =>{
return new Promise((resolve, reject) =>{
setTimeout(() => {
console.log(arg)
if(isReject){
reject('出错了')
return;
}
console.log(arg)
resolve(arg+1)
}, 1000);
})
}
// async 函数 返回的是一个promise
const fn = async() =>{
const res1 = await request(1);
const res2 = await request(res1);
const res3 = await request(res2);
const res4 = await request(res3);
console.log(res4);
}
fn();
// request(1).then((res1) =>{
// return request(res1);
// })
// .then((res2) =>{
// return request(res2);
// })
// .then((res3) =>{
// return request(res3)
// })
// .then((res4) =>{
// return request(res4)
// })
// .then((res5) =>{
// console.log(res5)
// });