继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【金秋打卡】第6天 《Node.js+Koa2+MySQL 打造前后端分离精品项目》

球状闪电2012
关注TA
已关注
手记 25
粉丝 4
获赞 1

课程名称:Node.js+Koa2+MySQL打造前后端分离精品项目《旧岛》

课程章节:第2章 【深入理解KOA】Koa2的那点事儿与异步编程模型

视频:2-8 深入理解async和await

课程讲师: 七月


课程内容:

app.use((ctx, next) => {
    console.log('hello world 1');
    const a = next()
    a.then((res) => {
        console.log(res)
    })
    console.log('hello world 2');
})
app.use((xtx, next) => {
    console.log('hello world 3');
    //next()
    console.log('hello world 4');
    return 'abc'
})

//输出为:
hello world 1
hello world 3
hello world 4
hello world 2
abc
//异步终极解决方案:async、await
app.use(async (ctx, next) => {
    console.log('hello world 1');
    const a = await next()
    console.log(a)
    console.log('hello world 2');
})
app.use((xtx, next) => {
    console.log('hello world 3');
    //next()
    console.log('hello world 4');
    return 'abc'
})

//输出为:
hello world 1
hello world 3
hello world 4
abc
hello world 2


await可以理解为“求值关键字”、await可以阻塞线程

读文件、发送http请求、操作数据库都是异步的

//需要安装的包
"dependencies": {
    "axios": "^1.1.3",
    "basic-auth": "^2.0.1",
    "bcryptjs": "^2.4.3",
    "jsonwebtoken": "^8.5.1",
    "koa": "^2.13.4",
    "koa-bodyparser": "^4.3.0",
    "koa-router": "^12.0.0",
    "koa-static": "^5.0.0",
    "lodash": "^4.17.21",
    "mysql2": "^2.3.3",
    "npm-check": "^6.0.1",
    "require-directory": "^2.1.1",
    "sequelize": "^6.25.3",
    "validator": "^13.7.0"
  }
app.use((xtx, next) => {
    const axios = require('axios')
    const start = Date.now()
    const res = axios.get('http://www.baidu.com')
    const end = Date.now()
    console.log(end - start)
})

//输出结果可能是0、1、2 表示时间差非常小
代码不等待http的返回结果,直接向下运行
app.use(async (xtx, next) => {
    const axios = require('axios')
    const start = Date.now()
    const res = await axios.get('http://www.baidu.com')
    const end = Date.now()
    console.log(end - start)
})

//输出结果是三位数,表示等待了http的返回结果

课程收获:

七月老师由浅入深的讲课技巧太棒了,尤其是将async、await的时候,讲的很清楚。尤其是提到“await可以理解为求值关键字”的时候。以前会用,但是没概念,现在听到七月老师的讲解,有一种‘通了’的感觉。视频最后七月老师提到async await是从c#来的。



七月老师非常注重在讲编程知识的同时,讲编程思维,讲知识和知识之间的关系。编程是实践性非常强的工作,学习知识最好的方法是放到项目中。做项目的目的不是做项目,最终要做出来自己的项目,业务承载的是编程知识。明天继续刷后边的课程。


http://img2.mukewang.com/635c89950001e11811420643.jpg

http://img1.mukewang.com/635c8f20000193b311350636.jpg


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP