質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

0回答

668閲覧

Express.jsの非同期処理とnext関数について

maskmelon

総合スコア63

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2020/08/04 07:44

JavaScript

1const express = require('express'); 2const router = express.Router(); 3 4router.get('/users', (req, res, next) => { 5 (async () => { 6 7 const id = req.params.id; 8 if (!id) { 9 // throw で投げられた error も catch できる 10 throw new Error('Params not found'); 11 } 12 13 // 通常の reject も catch できる 14 const user = await getUser(id); 15 res.status(200).json(user); 16 17 })().catch(next); 18}) 19 20module.exports = router;

Expressの非同期処理について調べていたところ、上記のようなコードを見かけたのですが、catch(next)でエラーハンドリングができる仕組みがよくわかりません。

参考にした記事によると、
「async 付きの即時関数で囲むことで、非同期例外を catch できるようになる
そこで nextFunction を渡してやれば、catch された error が nextFunction の引数に渡されて実行されるので、 Express のエラーハンドリングで処理することができる」とのことです。(https://qiita.com/yukin01/items/1a36606439123525dc6d)

next関数は次のミドルウェア関数を実行するためにnext()という形で使われるものだと思っていたのですが、next関数自体を引数に渡すとき何が起こっているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問