📑

【初級者脱却】JavaScriptの非同期通信について#1 async関数の戻り値

2024/12/16に公開

はじめに

JavaScriptにおける非同期通信で躓いた人は結構多いかと思います。
若手エンジニアはこれをなんとなく使えるって人は多いけど、ちゃんと仕組みを理解して使えている人は決して多くない印象。
そこで、小難しい解説を極力排除しつつ、JavaScriptの非同期通信を理解するサポートになる記事を複数回に分けて書いていきたいと思います。
今回はその第1弾です。

async関数

JavaScriptにおける非同期通信は、以前はPromise-thenを使ったメソッドチェーンが使われていましたが、今はES8で追加されたasync-awaitを使った記述が一般的かと思います。 
asyncの付かない関数は同期処理となり、順を追って実行されますが、asyncを付けた関数は非同期処理となります。

async関数の戻り値

まずはasync関数の戻り値が、通常の関数とどう違うのかについて。

  • 通常の関数の場合
function doFunc () {
  return obj = {
    key1: 'val1'
  }
}
console.log(doFunc()); // {key1: "val1"}

これは当然ですが、doFunc()関数が返したobjをコンソールログで出力します。
ではこれはどうでしょう。

async function doFunc () {
  return obj = {
    key1: 'val1'
  }
}
console.log(doFunc()); // Promise {}

doFunc()関数がリターンしているオブジェクトが、コンソールログで出力されません。  
これは、async関数の戻り値がpromiseであるためです。

では、promiseとは一体何者なのか。
次回はそれについて解説します。

Discussion