📖

【備忘録】return と return await の違い

に公開

この記事を書こうと思ったきっかけ

React でデータフェッチ部分を async で非同期関数を定義して、フェッチしてきたデータを返却するときに return data とするか return await data とするか迷った。

挙動は同じように見受けられたが、書き方による違い・よりベターな方を知りたかったため調査を行った。

先に結論から

return await を使う。で問題なさそう

書き方によって変わってくるところ

  • 例外のキャッチ場所
  • 処理時間

例外のキャッチ場所

try-catch ブロックとともに使用している前提

return の場合

  • 関数の呼び出しもとでキャッチされる
  • スタックトレースもその関数までとなる

return await の場合

  • 関数内部でキャッチされる
  • スタックトレースもより詳細になる

処理速度

  • return await より return の方が若干早い
  • マイクロタスクのタイミングの違いによるもの

再び結論

処理速度の観点では、return した方が早いがその差は微々たるものであり、エラー発生時の詳細度が高い return-await とした方がいい気がする。

参考にさせていただいた記事

https://zenn.dev/azukiazusa/articles/difference-between-return-and-return-await
https://zenn.dev/uhyo/articles/return-await-promise
https://zenn.dev/catallaxy_dev/articles/7a1610273e79c5

Discussion