【金秋打卡】第6天 《Node.js+Koa2+MySQL 打造前后端分離精品項目》
课程名称: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 2await可以理解为“求值关键字”、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#来的。
七月老师非常注重在讲编程知识的同时,讲编程思维,讲知识和知识之间的关系。编程是实践性非常强的工作,学习知识最好的方法是放到项目中。做项目的目的不是做项目,最终要做出来自己的项目,业务承载的是编程知识。明天继续刷后边的课程。
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦

