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とコマンドの入力からデータベースの削除、そして終了まで

推薦する

dns-prefetch とは何ですか? フロントエンドの最適化: DNS の事前解決によりページ速度が向上します

目次背景1. dns-prefetch とは何ですか? 2. dns-prefetch を設定するに...

win10でのmysql5.7.21解凍バージョンのインストールチュートリアル

次のように、Win10でMysqlの解凍バージョンをインストールします。環境: win10 64ビッ...

JavaScriptのモジュール性を理解する方法

目次1. ブラウザのサポート2.エクスポートモジュールのエクスポート3. モジュールをインポートする...

ウェブ理論: 考えさせない読書ノート

第 1 章<br /> Web ページをユーザーにとって使いやすいものにするための最も重...

JS でパブリッシュ サブスクライブ モデルを作成する

目次1. シーン紹介2 コードの最適化2.1 ファンを増やす問題を解決する2.2 作品追加の問題を解...

UTF8 でエンコードされた Web ページにファイルが含まれている場合の、ページの前の空白行の解決方法

<br />このページはUTF8エンコードを使用しており、ヘッダーとフッターはテンプレー...

Linux ユーザー スクリプトの作成/推測ゲーム/ネットワーク カード トラフィック監視の紹介

目次1. ユーザーが作成したスクリプト2. 単語当てゲーム3. ネットワークカードのトラフィック監視...

CentOS 7 で grub パスワードと単一ユーザー ログインを設定するサンプル コード

Centos7 と Centos6 では、GRUB パスワードの設定手順に大きな違いがあります。これ...

HTMLフォーム入力監視の詳細な理解

今日、入力イベントに関するブログ投稿を見て、気まぐれで関連情報を整理してみました。イベント:関数 c...

すべてのウェブ開発者が知っておくべき61のこと

通常、全員のスピーチを最初から最後まで読む必要があります。ただし、Stack Overflow には...

CSS ボックスモデル内のパディングと略語の詳細な説明

上図のように、パディング値は時計回り(右上、右下)の複合属性であり、パディングの内側の余白がボックス...

nginxでイメージサーバーを構築する手順の詳しい説明(ルートとエイリアスの違い)

インストール手順は省略します( yum -y install nginx;を使用して直接インストール...

VirtualBox+Ubuntu16でKubernetesクラスタを構築する実装

目次Kubernetesについて基本的な環境の準備VirtualBoxをインストールするUbuntu...

JavaScript スロットリングとアンチシェイクに関する簡単な説明

目次スロットルと手ぶれ防止コンセプト:違いスロットリングの実装スロットル機能手ぶれ補正の実装手ぶれ防...