第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

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

標(biāo)簽:
Node.js JavaScript

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

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

视频:2-9 为什么一定要保证洋葱模型

课程讲师: 七月


课程内容:

先说结论:如果不加async、await,KOA的中间件的执行顺讯不一定按照洋葱模型来执行

app.use((ctx, next) => {
    console.log(1)
    next()
    console.log(2)
})

app.use(async (ctx, next) => {
    console.log(3)
    consot axios = require('axios')
    const res = await.get('http://www.baidu.com')
        next()
    console.log(4)
})

//输出(不符合洋葱模型)
1
3
2
4

如何保证任何代码,不管多么复杂,都按照洋葱模型的顺序执行,要加上async await

app.use(async (ctx, next) => {
    console.log(1)
    await next()
    console.log(2)
})

app.use(async (ctx, next) => {
    console.log(3)
    consot axios = require('axios')
    const res = await.get('http://www.baidu.com')
    await next()
    console.log(4)
})

//输出(符合洋葱模型)
1
3
4
2

要在每一个中间件,调用下一个中间件的时候, next()的前边一定要加上await


第二个中间件中的结果,传递到第一个中间件,可以用return的方式。这种方式有局限性,

如果几个中间件都是自己编写的,自己可以完全掌握几个中间件的调用顺序,确实可以通过return的方式传递结果参数。

但Koa需要用到大量第三方的中间件,我们不知道第三方的中间件的执行顺序,这时就不能依靠return传递参数。


可以依靠ctx上下文,每一个中间件在执行时都会被注入ctx。

可以把第二个中间件的执行结果res保存到ctx中

在第一个中间件中用ctx拿到结果, 拿到结果的代码,应该写在next之后

app.use(async (ctx, next) => {
    await next()
    const r = ctx.r
    console.log(r)
})

app.use(async (ctx, next) => {
    const axios = require('axios')
    const res = await axios.get('http://www.baidu.com')
    ctx.r = res
    await next()
})
//输出
百度首页html源码(略)



课程收获:

七月老师先抛出来一个结论“如果不加async、await,KOA的中间件的执行顺讯不一定按照洋葱模型来执行”,然后用代码验证个结论。过程中由浅入深,又讲到了ctx上下文。这种循序渐进的方法让我理解起来更清晰透彻。


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


https://img1.sycdn.imooc.com//635dd691000113f111370637.jpg



點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消