课程名称:毕业一课通,从开题到答辩高效完成
课程章节: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) // });