Koa2學習(二)async await

2022-11-24 17:06:22 字數 1584 閱讀 7892

koa2中用到了大量的async/await語法,要學習koa2框架,首先要好好理解async/await語法。

async/await顧名思義是一個非同步等待的語法,是es7中為了實現用同步的方式寫非同步方法的一種新式語法。

我們再來看看async到底是一個什麼語法:

普通的方法:

function syncf() 

let sync_result = syncf()

console.log(sync_result)

結果:

i am a sync result
同步方法立即返回結果,大家都懂,就不解釋了。

async的方法:

async語法 是 一個加持在函式定義時的宣告:

async function asyncf() 

let async_result = asyncf()

console.log(async_result)

結果:

promise
我們看到執行async的函式時,返回的是一個promise物件,既然是promise物件, 那就好理解了。

promise物件肯定會有一個then方法,用於處理非同步結果,我們來試試:

async_result.then((res) => )
結果:

i am a asyncsync result
promise執行的結果會在then裡面返回,沒有問題。

await必須結合async來使用,顧名思義,是async wait (等待非同步)的意思。

// 定義一個耗時3秒返回結果的函式

function delayf() , 3000)

})}// 定義一個async函式

async function testawait() ms`)

}testawait()

結果:

i am a async result

cost 3002 ms

await一般在等待async方法執行完畢,但是其實await等待的只是一個表示式,這個表示式在官方文件裡說的是promise物件,可是它也可以接受普通值。

async function testasync() 

async function testawait2() ms`)

await delayf()

let time3 = date.now()

console.log(`cost $ ms`)

await testasync()

let time4 = date.now()

console.log(`cost $ ms`)

}testawait2()

結果:

cost 1 ms

cost 3002 ms

cost 1 ms

koa2整合mysql

引入mysql包 npm install mysql封裝mysql 建立mysql.js檔案放在utils 工具包 中 使用pool連線池 mysql.js 封裝mysql const mysql require mysql let pools 連線池 let query sql,callback,...

Koa2學習(六)使用koa router

引入中介軟體 配置需要的路由 const koa require koa 引入koa router並對其例項化 const router require koa router 配置get路由 router.get get function ctx,next 配置post路由 router.post ...

實現自己的Koa2

這部分的 在中demo資料夾中 koa就是基於node自帶的http模組,經過封裝,監聽埠,實現ctx 上下文 管理,中介軟體管理等 例子1 koa監聽3000埠,在頁面輸出值 1 const koa require koa 2 koa 35 ctx.body hello koa2 6 7,func...