Skip to content

「await」ページ: 拒否されたPromiseをreturnする際のサンプルでrequest関数にasyncが付いておらず、記載の出力(finally, catch)と実際の挙動(error, finally, then)が一致しない #1133

Description

@Hideka-I

該当箇所: https://typescriptbook.jp/reference/asynchronous/await
「拒否されたPromiseをreturnするとき」>「returnの前にawaitしない (ただreturnする)」セクション

このセクションのrequest関数にはasyncキーワードが付いていません。

function request(): Promise {
throw new Error("error");
}

一つ前のセクション「returnの前にawaitする」では同じrequest関数がasync functionとして定義されており、今回のセクションはその関数のままawaitの有無だけを比較する意図だと理解しています。しかしasyncが付いていないと、throwはmain()のtryブロック内で同期的に例外を投げてキャッチされてしまい、await有無による違いが本来生まれません。

手元の環境(TypeScript 6.0.3, Node.js v22)で実際にこのコードを実行したところ、出力は
error
finally
then
となり、本文記載の
finally
catch
とは一致しませんでした。request関数にasyncを付けると、本文記載の出力通りになることを確認しています。前セクションと同じrequest関数(asyncあり)に揃えていただくのがよいのではないかと思います。

お手数をおかけしますが、ご確認いただけますと幸いです🙇

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions