await / async try / catchブロックをすべての関数にラップする方法はありますか?

ネバーラックス

だから私はexpress.jsを使用していて、ノード7でasync / awaitを使用することを検討しています。それでもエラーをキャッチできるが、try / catchブロックを取り除く方法はありますか?おそらく関数ラッパー?これが実際に関数のコードを実行し、を呼び出す方法がわかりませんnext(err)

exports.index = async function(req, res, next) {
  try {
    let user = await User.findOne().exec();

    res.status(200).json(user);
  } catch(err) {
    next(err);
  }
}

このようなもの...?

function example() {
   // Implements try/catch block and then handles error.
}

exports.index = async example(req, res, next) {
  let user = await User.findOne().exec();
  res.status(200).json(user);
}

編集:

これにもっと似たもの:

var wrapper = function(f) {
    return function() {
        try {
            f.apply(this, arguments);
        } catch(e) {
            customErrorHandler(e)
        }
    }
}

これはどういうわけかtry / catchブロックを処理しますが、機能しません:

exports.index = wrapper(async example(req, res, next) {
  let user = await User.findOne().exec();
  res.status(200).json(user);
});

Javascriptのすべての関数にtry-catchを追加する方法はありますか?を参照してください非同期でない例の場合。

ベルギ

はい、あなたは簡単にだけでなく、非同期機能のために、このようなラッパーを書くことができます-ちょうど使用をasync/ await

function wrapper(f) {
    return async function() {
//         ^^^^^
        try {
            return await f.apply(this, arguments);
//                 ^^^^^
        } catch(e) {
            customErrorHandler(e)
        }
    }
}

または、この例のように、(特にパラメーターの数を使用して)表現するように調整されたpromiseを直接使用します。

function promiseWrapper(fn) {
    return (req, res, next) => {
         fn(req, res).catch(next);
    };
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Async / Await JS Catch not working in try/catch

分類Dev

Expressとasync / await:try / catchでロットをラップしますか?

分類Dev

async / awaitコードはtryブロックに完全に含まれるべきですか?

分類Dev

Node mysql2 async-await try catch

分類Dev

async / awaitの使用中のtry / catchのスコープに関する問題

分類Dev

try / catchを使用してAsync / Await関数でPromise.allを使用するにはどうすればよいですか?

分類Dev

Async / Awaitを使用したTry ... Catch構文の修正

分類Dev

Can I use multiple 'await' in an async function's try/catch block?

分類Dev

非同期関数のtry / catchブロックで複数の「await」を使用できますか?

分類Dev

ノード:ネストされたasync / await try / catchでエラー応答をバブリングする

分類Dev

nodejs async/await try/catch jest test パスすべきでないときに合格する

分類Dev

async / awaitとtry / catchを使用して階層型API呼び出しを行う

分類Dev

タスクを返すすべてのメソッドにasync / awaitを使用する必要があります

分類Dev

`async / await`チェーン内のすべての関数は、` async / await`キーワードを使用する必要がありますか?

分類Dev

async / awaitを使用して戻り値をpromiseにラップする必要がありますか?

分類Dev

NodeJs-async / await内のAsync / Await

分類Dev

async / awaitでpromiseをラップする

分類Dev

コードの一部をasync / awaitブロックから別の関数に抽出します

分類Dev

Jest / Enzyme test try / catchでasync / awaitメソッドを使用してコンポーネントを反応させます

分類Dev

ReactのsetState関数をES8のasync / awaitにラップする

分類Dev

async / awaitはイベントループをブロックしますか?

分類Dev

asyncとawaitを使用する

分類Dev

コードは、async関数がありますが、エラーawaitはasync関数内でのみ宣言できることを示しています

分類Dev

Mochaテストは未処理のpromiseについて文句を言いますが、catchブロックでasync / awaitを使用しています

分類Dev

await / asyncのトラブル

分類Dev

Async await-awaitは他のコードの実行をブロックしますか?

分類Dev

「async」/「await」メソッドのパラメーター検証はラップする必要があります

分類Dev

async / awaitでブロックを試行/キャッチする

分類Dev

Python async / awaitをNodejs async / awaitと比較して理解する

Related 関連記事

  1. 1

    Async / Await JS Catch not working in try/catch

  2. 2

    Expressとasync / await:try / catchでロットをラップしますか?

  3. 3

    async / awaitコードはtryブロックに完全に含まれるべきですか?

  4. 4

    Node mysql2 async-await try catch

  5. 5

    async / awaitの使用中のtry / catchのスコープに関する問題

  6. 6

    try / catchを使用してAsync / Await関数でPromise.allを使用するにはどうすればよいですか?

  7. 7

    Async / Awaitを使用したTry ... Catch構文の修正

  8. 8

    Can I use multiple 'await' in an async function's try/catch block?

  9. 9

    非同期関数のtry / catchブロックで複数の「await」を使用できますか?

  10. 10

    ノード:ネストされたasync / await try / catchでエラー応答をバブリングする

  11. 11

    nodejs async/await try/catch jest test パスすべきでないときに合格する

  12. 12

    async / awaitとtry / catchを使用して階層型API呼び出しを行う

  13. 13

    タスクを返すすべてのメソッドにasync / awaitを使用する必要があります

  14. 14

    `async / await`チェーン内のすべての関数は、` async / await`キーワードを使用する必要がありますか?

  15. 15

    async / awaitを使用して戻り値をpromiseにラップする必要がありますか?

  16. 16

    NodeJs-async / await内のAsync / Await

  17. 17

    async / awaitでpromiseをラップする

  18. 18

    コードの一部をasync / awaitブロックから別の関数に抽出します

  19. 19

    Jest / Enzyme test try / catchでasync / awaitメソッドを使用してコンポーネントを反応させます

  20. 20

    ReactのsetState関数をES8のasync / awaitにラップする

  21. 21

    async / awaitはイベントループをブロックしますか?

  22. 22

    asyncとawaitを使用する

  23. 23

    コードは、async関数がありますが、エラーawaitはasync関数内でのみ宣言できることを示しています

  24. 24

    Mochaテストは未処理のpromiseについて文句を言いますが、catchブロックでasync / awaitを使用しています

  25. 25

    await / asyncのトラブル

  26. 26

    Async await-awaitは他のコードの実行をブロックしますか?

  27. 27

    「async」/「await」メソッドのパラメーター検証はラップする必要があります

  28. 28

    async / awaitでブロックを試行/キャッチする

  29. 29

    Python async / awaitをNodejs async / awaitと比較して理解する

ホットタグ

アーカイブ