マスターJavaScript非同期操作:async/await detterfort /
を探り、非同期操作を効率的に制御し、より明確かつ読みやすいコードを作成する方法を教えます。
async
await
コアポイント:
JavaScriptでは、
/async
関数は約束を返し、await
キーワードは、約束が解決されるまで関数実行を一時停止し、それによりコードとフロー制御の読みやすさを向上させます。 async
関数のエラー処理は、await
/async
try
catch
を使用して、非同期コマンドを並行して最適化し、複数のPromise
を連続的に実行するのではなく、同時に解決できるようにします。 catch()
Promise.all
ES2022によって導入された最上層により、ESモジュールの最上層でPromise
を使用することができ、追加のラッパーを必要とせずに非同期コードの統合を簡素化します。 for...of
async
コンテンツの概要:await
await
JavaScriptの非同期関数を作成する方法キーワード
キーワードasync
await
アンダーグラウンド使用約束await
非同期関数でのエラー処理async
async
await
catch()
await
await
関数が完了するのを待ちません。したがって、API キーワードを使用して、プログラムを非同期操作が完了する前に完了するまで、実行を続けることができます。
この機能は、ES2017でJavaScriptを導入し、すべての最新のブラウザによってサポートされています。
function fetchDataFromApi() { // 数据获取逻辑 console.log(data); } fetchDataFromApi(); console.log('数据获取完成');
fetchDataFromApi
数据获取完成
async
Fetch APIを使用して、これを行うことができます:await
function fetchDataFromApi() { // 数据获取逻辑 console.log(data); } fetchDataFromApi(); console.log('数据获取完成');
ここで、Jokeapiからプログラミングジョークがあります。 APIの応答はJSON形式であるため、リクエストが完了した後(json()
メソッドを使用して)応答を抽出し、ジョークをコンソールにログに記録します。
JokeapiはサードパーティのAPIであるため、ジョークの品質を保証することはできません。
このコードをブラウザまたはノードで実行する場合(フラグを使用してバージョン17.5)、コンソールが間違った順序でコンテンツを記録していることがわかります。 --experimental-fetch
async
キーワードを使用してこれを行うことができ、async
キーワードの前に配置します:function
function fetchDataFromApi() { fetch('https://v2.jokeapi.dev/joke/Programming?type=single') .then(res => res.json()) .then(json => console.log(json.joke)); } fetchDataFromApi(); console.log('数据获取完成');
を関数呼び出しにリンクして、正しい実行順序を取得します:then()
async function fetchDataFromApi() { fetch('https://v2.jokeapi.dev/joke/Programming?type=single') .then(res => res.json()) .then(json => console.log(json.joke)); }
fetchDataFromApi() .then(() => { console.log('数据获取完成'); });
/async
が点滅します。これにより、同期コードのように見える構文を使用して非同期コードを作成できます。 await
await
キーワードを使用して、関数の非同期操作を序文に序文で序じることです。これにより、JavaScriptインタープリターが実行を「一時停止」し、結果を待つようになります。これらの操作の結果を変数に割り当てることができます。
await
また、
<code>程序员的浪漫:一行代码解决千行代码的bug。 数据获取完成</code>
fetchDataFromApi
残念ながら、今すぐコードを実行しようとすると、エラーが発生します。
async function fetchDataFromApi() { const res = await fetch('https://v2.jokeapi.dev/joke/Programming?type=single'); const json = await res.json(); console.log(json.joke); }
を使用できないためです。これについては後で詳しく説明しますが、この問題を解決する最も簡単な方法は、コールコードを独自の関数で包むことです。
await fetchDataFromApi(); console.log('数据获取完成');
async
この追加のボイラープレートコードが必要であるという事実は残念ですが、私の意見では、コードは約束ベースのバージョンよりも読みやすいです。 await
非同期関数を宣言するさまざまな方法async
<code>Uncaught SyntaxError: await is only valid in async functions, async generators and modules</code>
キーワードの後に関数名)を使用しますが、これに限定されません。また、関数式、矢印関数、および匿名関数を
としてマークすることもできます。async function fetchDataFromApi() { const res = await fetch('https://v2.jokeapi.dev/joke/Programming?type=single'); const json = await res.json(); console.log(json.joke); } async function init() { await fetchDataFromApi(); console.log('数据获取完成'); } init();
function
(次の内容は同じです。元のテキストに従って段落で段落を書き換え、元の意味を維持し、言語スタイルを調整してよりスムーズで自然にする)
以上がJavaScript Async/awaitingの初心者ガイド、例がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。