jsフェッチ非同期リクエストの使用の詳細な例

jsフェッチ非同期リクエストの使用の詳細な例

非同期を理解する

まず、リクエストは非同期プロセスであることを理解する必要があります。

リクエストをサーバーに送信し、リクエスト結果を受信するまでに時間がかかるためです。

リクエストが完了するまで待機し、リクエストが完了した後にコールバックを実行して、受信したリクエスト結果を処理する必要があります。

フェッチ(url)

学習の便宜上、uni-app チュートリアルの API インターフェースを借用します。

  定数 url = 'https://unidemo.dcloud.net.cn/api/news'

fetch は Promise に基づいて設計されていることを知っておく必要があります。理解できない場合は、まず es6 Promise を学習することをお勧めします。

fetch(url) は get リクエストを直接送信することができ、それ自体が Promise です。

Promise なので、.then コールバックを使用できます。試してみましょう。

  fetch(url).then(res => {
    コンソール.log(res)
  })

何が返されるのでしょうか?それは応答です。

レスポンスは、いくつかのリクエストパラメータを返すカプセル化されたオブジェクトです。

より便利な例は status です。これは、リクエストのステータス コードが 200 であり、リクエストが正常に送信されたことを示します。

GET リクエストを送信したので、最も気になるのは、要求されたデータがどこにあるかということです。

レスポンス.json()

心配しないでください。レスポンスのプロトタイプをクリックすると、json メソッドが見つかります。

このメソッドも Promise を返すことをお伝えします。

次に、次のコールバックのためにこの Promise を返すことができます。

次のステップでは、結果を出力して結果を確認します。

  fetch(url).then(response => {
    response.json() を返す
  }).then(res => {
    コンソール.log(res)
  }) 

必要なデータはここにあることがわかりました。

asyncとawaitを組み合わせる

上記のリクエストを行うために fetch を使用してコールバックを実行することもできますが、コールバックを使用するとコードのエレガントさが失われます。

ただし、非同期関連のキーワード async と await を知っていれば、別の書き方もあります。

関数に async を追加すると、関数は非同期関数になり、その中で await を使用して、コードに非同期操作 Promise を待機させ、コールバック結果を返すことができます。これは、非同期を同期に変えるという意味を持ちます。

  const fetchAPI = 非同期() => {
    const レスポンス = フェッチ(url) を待機
    const データ = 応答.json() を待機します
    コンソール.log(データ)
  }

  フェッチAPI()

例外処理

そして、最初のステップの応答のステータス コードを使用して、次のステップを正常に実行できるかどうかを判断できます。

  const fetchAPI = 非同期() => {
    const レスポンス = フェッチ(url) を待機
    応答ステータス === 200 の場合
		const データ = 応答.json() を待機します
		コンソール.log(データ)
    }それ以外{
		console.log('リクエスト例外')
	}
  }

  フェッチAPI()

次に、予期しない状況をより厳密に考慮するために、try-catch を使用して例外をキャプチャします。

  const fetchAPI = 非同期() => {
    試す {
      const レスポンス = フェッチ(url) を待機
      応答ステータス === 200 の場合
        const データ = 応答.json() を待機します
        コンソール.log(データ)
      } それ以外 {
        console.log('リクエスト例外')
      }
    } キャッチ (エラー) {
      コンソール.log(エラー)
    }
  }

  フェッチAPI()

投稿リクエスト

fetch の 2 番目の入力パラメータはオブジェクトであり、これはリクエストの構成パラメータです。

リクエストメソッドを post に設定でき、リクエストヘッダーと post 入力パラメータも設定できます。

  フェッチ(url, {
    メソッド: "POST",
    ヘッダー: {
      'コンテンツタイプ': 'application/json',
      ...
    },
    本文: JSON.stringify({
      'キー': 値、
      ...
    })
  })

要約する

js fetch 非同期リクエストの使用に関するこの記事はこれで終わりです。js fetch 非同期リクエストの使用に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript はフェッチを使用して非同期リクエストメソッドを実装します。例

<<:  docker cp ファイルをコピーしてコンテナに入る

>>:  MySQLでよく使われるSQLとコマンドの入力からデータベースの削除、そして終了まで

推薦する

JavaScriptはスクロールバーの位置を取得し、ページをアンカーポイントまでスライドします。

序文この記事は、私が最近仕事で遭遇した問題を記録したものです。アプリネイティブとフロントエンドのh5...

MySQL 更新セットとの違い

目次問題の説明原因分析解決問題の説明最近、奇妙な問い合わせを受けました。更新ステートメントはエラーな...

WeChatミニプログラムがいいねサービスを実装

この記事では、WeChatアプレットの具体的なコードを参考までに紹介します。具体的な内容は次のとおり...

IE8は優れたエクスペリエンスを提供します: アクティビティ

今日は IE8 ベータ 1 (以下、IE8 と略します) をチラ見しました。IE8 は素晴らしい体験...

JS はシンプルな todoList (メモ帳) 効果を実装します

メモ帳プログラムは、HTML + CSS + JavaScript の 3 つの主要なフロントエンド...

MySQL クエリの最適化: クエリが遅い原因と解決策

開発に携わっている友人、特に MySQL に関係のある友人は、非常に遅い MySQL クエリに遭遇す...

js メモリ リークのシナリオ、それらを詳細に監視および分析する方法

目次序文どのような状況でメモリリークが発生する可能性がありますか? 1. 偶発的なグローバル変数2....

CSS3で実装されたグラデーションスライド効果

成果を達成する コードhtml <div class="css-slideshow&...

JavaScript を使用して userAgent を通じていくつかの一般的なブラウザを判別する方法

序文通常、h5 ページを作成するときは、WeChat、QQ、Weibo などのエコシステム内でトラフ...

JavaScript コードを省略する一般的な方法の概要

目次序文矢印関数一般的な配列操作をマスターするスプレッド演算子オブジェクトの省略形構造化割り当てデー...

Linux リダイレクトの使用方法の詳細な説明

誰でも時々データをコピーして貼り付ける必要があると思います。コピーして貼り付けるためにファイルを開く...

jsは、州、市、地区の3レベルのリンクの非選択ドロップダウンボックスバージョンを実現します。

インターネットで3レベルリンクを検索したところ、すべてオプションで書かれていました。突然、別の方法で...

JavaScript フロー制御 (分岐)

目次1. プロセス制御2. シーケンシャルプロセス制御3. 分岐フロー制御if文1. 支店構造2. ...

Vue で video.js を使用して m3u8 形式のビデオを再生する方法

目次1. インストール2. videojsの紹介3. コンポーネントでのテストと使用1. 基本的な自...

Linux サーバー上の hosts ファイル構成の詳細な説明

Linux サーバーのホスト ファイルの構成hosts ファイルは、Linux システム内の IP ...