JS で async と await を使用する方法

JS で async と await を使用する方法

1. 非同期

async 、非同期コードが実行されるコード ブロックを定義する非同期関数を作成します。

それを非同期関数に変換するにはどうすればよいでしょうか?これは関数の前に配置できるキーワードasyncで始まります。

非同期関数f(){
  1 を返します。
}
 
f().then(アラート); // 1
 
//結果は上記と同じ async function f() {
  Promise.resolve(1) を返します。
}
 
f().then(アラート); // 1
 
//矢印関数を使用することもできます let hello = async () => { return "1" };
hello().then((値) => console.log(値))
//戻り値は次のように簡略化することもできます hello().then(console.log)

非同期関数の特徴の 1 つは、関数の戻り値がpromiseであることが保証されることです。

関数宣言にasyncキーワードを追加すると、値を直接返すのではなく、 promiseを返すように指示されます。さらに、 awaitの使用をサポートすることで、同期関数の潜在的なオーバーヘッドを回避します。

2. 待つ:

await非同期関数内でのみ機能します。これを任意の非同期のawaitキーワードに配置すると、 JavaScriptエンジンはpromiseが完了して結果が返されるまで待機します。 promiseを待っている間に、実行を待っている他のコードが実行される機会があります。

Web API関数を含む、 Promiseを返す任意の関数を呼び出すときにawaitを使用できます。

非同期関数f(){
  promise = new Promise((resolve, deny) => { とする
    setTimeout(() => 解決("ブーム!"), 1000)
  });
 
  let result = await promise; // promise が解決するまで待機します。alert(result); // "Boom!"
}
 
f(); // 結果を取得して実行を続行します。したがって、上記のコードは 1 秒後に「Boom!」と表示します。

注: await は実際には、promise ステータスが満たされるまで関数の実行を一時停止し、promise の結果を使用して実行を続行します。 JavaScript エンジンは他のスクリプトの実行、イベントの処理など、他のタスクを同時に処理できるため、この動作では CPU リソースが消費されません。

3. 包括的なアプリケーション

async/await awaitが待機するため、あらゆる場所から.then()コード ブロックを取り除くことができます。

非同期関数A() {
  応答を待機して fetch('c.jpg');
  myBlob = response.blob() を待機します。
 
  objectURL を URL.createObjectURL(myBlob) とします。
  image = document.createElement('img'); を作成します。
  image.src = オブジェクトURL;
  document.body.appendChild(画像);
}
 
あ()
.catch(e => {
  console.log('問題: ' + e.message);
});

コードをより少ない.then()ブロックでラップすると、同期コードに非常によく似たものになり、非常に直感的になります。このように使うととてもクールです!

JS async/await使い方についてはこれで終わりです。JS async/await の使い方についてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JS ループで async と await を正しく使用する方法
  • JS で async await をエレガントに使用する方法
  • JavaScript のよりエレガントなエラー処理方法 async await
  • JavaScript の async と await のシンプルで詳細な学習
  • JavaScript における async と await の使い方とメソッド
  • JavaScript PromiseとAsync/Awaitの詳細な説明

<<:  Docker ケース分析: MySQL データベース サービスの構築

>>: 

推薦する

MySQL 5.7.25 圧縮版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.25圧縮版のインストールと設定方法を参考までに紹介します。具体的な...

Linux には make コマンドがありません (make: *** ターゲットが指定されておらず、makefile または make コマンドのインストール方法が見つかりません)

知らせ! ! !この状況は、実際には仮想マシンのインストール中に回避できます。次回仮想マシンをテスト...

Reactフックの長所と短所

目次序文アドバンテージ:欠点: 1. レスポンシブな使用効果2. ステータスが同期されていないRea...

バックエンドの権限に基づいてナビゲーション メニューを動的に生成する Vue-router のサンプル コード

目次js の1. グローバルガードを登録する2. Vuex 状態管理グローバルキャッシュルート3. ...

JavaScript 文字列の一般的なメソッドの詳細な説明

目次1. キャラクター文法パラメータ索引戻り値2. 連結文法パラメータ文字列2 [, …文字列N]戻...

CSS を使用して画像の色を変更する 100 の方法 (収集する価値あり)

序文「画像処理というと、PhotoShop などの画像処理ツールを思い浮かべることが多いです。フロン...

Reactのようなフレームワークをゼロから作成する

最近、インターネットで「Build your own React」という記事を見ました。著者は、シン...

JavaScript ベースのパスワード ボックス検証情報の実装

この記事では、パスワードボックスの検証情報を実装するためのJavaScriptの具体的なコードを例と...

Vue プロジェクトは、コードの暗号化と難読化を実装するために webpack-obfuscator を設定します。

背景会社のコードは第三者に提供され、利用されます。ソースコードが完全に漏洩しないようにするには、提供...

Minio 軽量オブジェクト ストレージ サービスのインストールとブラウザの使用チュートリアル

目次導入インストール1. マウントするフォルダを作成する2. イメージをプルする3. コンテナを作成...

HTML ページにミュージック ビデオを追加する例

1. ビデオタグFirefoxでは自動再生をサポートしますが、GoogleとIEではサポートしません...

CSSでフォントアイコンを使用する方法をお教えします

まず、フォントアイコンとは何でしょうか?表面的にはアイコンですが、実際はテキストです。テキストの設定...

Linux の wget コマンドの詳細な紹介

目次まずwgetをインストールするヘルプマニュアルを見る1. wgetを使用して単一のファイルをダウ...

Javascript の奇妙な点をご存知ですか?

私たちのベテランの先人たちは、数え切れないほどのコードを書き、数え切れないほどの落とし穴に陥ってきま...