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 データベース サービスの構築

>>: 

推薦する

Mysql5.7 のルートパスワードを忘れた場合の対処法 (シンプルで効果的な方法)

前回の記事では、MySQL 5.7でルートパスワードを忘れた場合と、MySQL 5.7でルートパスワ...

Linux lnコマンドの使用

1. コマンドの紹介ln コマンドは、ファイルのリンクを作成するために使用されます。リンクは、ハード...

データベースのデフォルトパスを変更した後にmysqlが起動できない問題の解決策

序文mysql がデフォルトのデータベース パスを変更したため、サービスを開始できませんでした。ログ...

MAC で Mysql5.7.10 のルートパスワードを変更する方法

まず、MySQLをskip-grant-tablesモードで起動します: mysqld --skip...

MySql インポート CSV ファイルまたはタブ区切りファイル

別のライブラリから別のライブラリにデータをインポートする必要がある場合があり、このデータは CSV ...

Vue Element UI カスタム説明リストコンポーネント

この記事の例では、Vue Element UIカスタム説明リストコンポーネントの具体的なコードを参考...

JSON.parse と JSON.stringify の使い方の詳細な説明

目次JSON.パースJSON.parse 構文リバイバーパラメータJSON.parse の機能その他...

vue プロジェクトで rem を使用して px を置き換える例

目次道具プラグインをインストールするプロジェクトのルートディレクトリに.postcssrc.jsファ...

Docker のインストールと構成イメージの高速化の実装

目次DockerバージョンCentOS に Docker エンジンをインストールするシステム要件古い...

ネイティブ js はカスタム スクロール バー コンポーネントを実装します

この記事の例では、カスタムスクロールバーコンポーネントを実装するためのjsの具体的なコードを参考まで...

Oracle の MySQL バージョンでユーザー Scott のテーブル ステートメントを作成する例

概要: Oracle scottユーザーには4つのテーブルがあり、実験やデータ検証に便利です。現在は...

AngularでTweenMaxアニメーションライブラリを使用する際の問題と解決策

最近何もすることがないのでCSSをいじっていますより良いアニメーションライブラリTweenMaxを見...

AngularパイプラインPIPEの紹介と使い方

序文PIPE、パイプラインと翻訳されます。 Angular パイプは、HTML コンポーネントで宣言...

MySql でメモリ使用量を削減する方法の詳細な説明

序文デフォルトでは、MySQL はデータベース クエリ データをキャッシュするために大きなメモリ ブ...

MySQL シリーズ 8 MySQL サーバー変数

チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念My...