JSで外部データを扱う非同期処理の説明(fetch,async/await,Promis)

fetch

fetchとは何か

fetchはJavascriptの標準組み込み関数の1つである。

標準組み込み関数・・・Javascriptに初めから入っている関数。
Mathや.pushなど、自分が定義していなくても、関数名さえ書けば決まった動きをするやつ。

そしてfetch関数の役割は、外部からデータを引っ張ってくること。

作っているサイト・アプリに必要な外部データを取得するのに使える関数がfetch。

fetchの概念理解はこの動画が分かりやすい。

基本の書き方は以下の通り。

fetch("取りたいデータのURL") //データの状態と結果をPromisオブジェクトとして取得
  .then((res) => res.json()) //結果だけをjson形式で変数[res]に格納
  .then((data) => console.log(data)); //データを処理

  .catch(error => console.log(error)); //どっかでエラーが起きた場合の処理 ※無くてもOK

まず、最初の行で取ってきたデータはPromisオブジェクトという形式になっている。

Promisオブジェクトには状態(取得成功or失敗)と、結果(取得したデータ)が入っている。

2行目でPromisオブジェクトの結果だけを、変数に格納する。

データはjson形式のことが多いが、txtなどの形式で格納することも可能。

3行目で取ってきたデータを好きに処理する(今回はconsole.logで出力するだけ)

async/awaitを使った書き方

また、fetchには違う書き方もある。意味は同じ。

//async/awaitを使った書き方
async function fetchData() {
  const res = await fetch("取りたいデータのURL");
  const data = await res.json();
}
fetchData();

関数の前にasyncを付けることで、非同期関数にすることができる。

awaitを書いた関数は、順番(同期的)に実行される。

非同期通信(非同期処理)

fetch関数は非同期通信(非同期処理)という特徴がある。

まず、同期通信というのはJavascriptの基本的な関数の仕様で、前の処理が全て終わってから次の処理が始まるというもの。

非同期通信はそれをせず、fetch関数の処理が完了する前に他の処理も同時進行で動く。

そして、fetch関数の方が終わるのが遅ければ、結果も最後に出力される。

fetchはデータ送受信をするので、その時間で他の処理が遅れることが無いようにするための仕様。

Fetch APIとは

fetch関数を用いてデータを受け取ることができるAPIがfetch API。

fetch APIのメソッドがfetch関数。

分かりにくいならfetch関数≒fetch APIと考えてOK

コメント

タイトルとURLをコピーしました