(Express)HTMLからの処理をNode.jsで同期/非同期処理した時に教わった注意点


連投すみません。お引越し中です…。

結論から言うと、
Expressのミドルウェアには通常のコールバック関数を与えること!

らしいです…

これだけでは理解できなかったのでまとめます。

ミドルウェアとは

コンピューターは「ハードウェア」「OS」「ミドルウェア」「アプリケーション」の4要素で構成されています。

ミドルウェアは「OS」と「アプリケーション」の間にあるような、「OS」でも「ミドルウェア」でもないもの。

機械とアプリの橋渡しをするようなものは全て「ミドルウェア」のようです…。

例えば、windows10が「OS」ブラウザが「アプリケーション」、
「Webサーバ」(ブラウザからのリクエストに応じてWebページを送信する)が「ミドルウェア」です。

わかりずらい…!

expressとNode.jsでいうと、router.all()関数は、expressからNodeに渡している関数だから、ミドルウェアらしいです。

つまり、router.all()やrouter.post()のコールバック関数を標準にすればいいのですね!

コールバック関数とは

関数の引数として呼び出す関数です。

(例) function( 10, timer() )

これは、function関数の引数として呼び出されているtimer()がコールバック関数。

Express+Node.jsの場合、router('/', function(){})のfunction()関数を、通常の関数にしなければならない。

つまり、asyncはコールバック関数にはつけてはいけません!(つけてた)

まとめ

だめ↓

index.js
router.all('/', async function(){
 //中身
})

いい↓

index.js
router.all('/', function(){
 main(){
  //中身
 }

 main()
})