javascript待機

| | | |

ES6で導入されたPromisesを使用すると、複数のコールバック関数を処理しなくても、非同期コードを簡単に記述できます。 Promiseを使用すると、記述と保守の両方が難しいマルチレベルのコールバックについて心配する必要はありません。

JavaScriptには、Promisesを使用して非同期コードをさらに簡単に記述できる別の機能があります。非同期関数です。 / 出席。これら-これらを使用すると、同期ルックを実行するが非同期ルーチンを作成するコードを記述できます。

このガイドでは、非同期/待機関数とは何か、およびコードでそれを使用する方法について説明します。始めましょう

プロミス:復習

非同期/待機関数について説明する前に、プロミスを要約する必要があります。 promiseは、非同期操作を表します。操作が実行されるコードを示し、操作が成功すると値が返されます。それ以外の場合は、プログラムの残りの部分にエラーが返されます。

Promiseは、Promiseが作成された時点では不明な値を表します。約束はまさにそれです:将来の値があなたのコードに返されるという約束。約束はオブジェクトであるため、すべて大文字にする必要があります。

このシナリオを検討してください。 APIからリソースを取得する必要があります。リクエストの処理には1〜2秒かかります。ユーザーがリクエストの処理を待つ代わりに、コードをPromiseに移動して、プログラムの残りの部分が引き続き機能できるようにすることができます。

これは、コードの一部を引き続きレンダリングできることを意味します。データ抽出中のウェブサイトUI。値が返されるとすぐに、Promiseはメインプログラムに送信します。

promiseの例を次に示します。

コードフィードバック:Cookieが送信されました! sendCookies.then()メソッドを実行すると、promiseが解放されます。プログラムは1000ミリ秒待機してから、「Cookieが送信されました!」という値を返します。「メインプログラム

非同期と待機の使用方法

関数と非同期/待機では、コード実行待機ステートメントは、promiseが返されるまで`非同期関数内でブロックします。これが開発者の理由です。多くの場合、非同期/非同期待機機能を主張しますが、非同期タスクの実行を監視します。

次の例を検討してください。

コードフィードバック:Cookieが送信されました。 sendCookies()関数は、「Cookieが送信されました」という値を返すのに1000ミリ秒かかります。この場合、非同期関数を宣言して、コードがpromiseの解決または拒否を待機するようにしました。

「async」関数キーワードは、非同期を実行することをコードに通知します。私たちの関数での操作。 「expectation」という単語-keyは、コードがsendCookies()promiseが戻るのを待ってから、プログラムの実行を続行することを示します。

非同期関数は常にpromiseを返します。

AsyncとWithの使用マルチパス待機

非同期/待機関数は、操作する必要のある複数のプロミスがある場合に最もよく使用されます。これは、チェーンプロミスと呼ばれることもあります。実際、コードは次のステップに進む前に、各ステップに戻るという約束を待ちます。

コードは次を返します:

各ステップに1000ミリ秒かかります!。 sendCookies()関数は、ProcessOrder()関数からの戻りが約束されるまで実行されません。

非同期式

非同期/待機関数を使用する方法は3つあります。< / p>

1つ目は、最後の例で示したアプローチです。関数を宣言することです。この例では、promiseを返す関数を宣言したため、「async」と「expectation」という単語を使用しました-これらの関数を実行するためのキー

方向関数を使用して非同期関数を宣言することもできます:

このコードは次を返します:Cookieが送信されました!これは最初の例と同じですが、main()関数を宣言する代わりに、矢印関数を使用しました

同様に関数の式構文を使用できます。

このリターンコード:Cookieが送信されましたご覧のとおり、出力は再びlまたはそれ自体です。唯一の違いは、関数の宣言方法です。

実際、この構文は最後の例と非常によく似ています。ブーム関数を使用する代わりに、-key "function()"という単語を使用するだけです。

非同期/待機関数を宣言するのにこれ以上の方法はありません。それはすべてあなたが書いているプログラムとあなたが好む構文に依存します。指示関数が最も簡潔な方法であると主張することもできますが、非同期/待機関数を宣言する他の方法が他の場合に適している場合があります。

非同期/待機を使用したWebリクエストの処理

async /の最も一般的な使用法の1つは、promiseベースのAPIであるFetch As()を使用してWebリクエストを処理するawait関数です。フェッチ()の使用方法について詳しくは、JavaScriptの初心者向け検索ガイドをご覧ください

次の例を見てみましょう:

コードは次を返します:

retrieveComments()関数を実行するときは、" wait "word-key functiontowait"フェッチの実行を使用します()ステートメント。これは、Webリクエストが処理されるまで、残りのスケジュールが継続しないことを意味します。実際、関数はpromiseを返します。

fetch()関数fetchによってpromiseが返された場合()、返された値をJSONに変換します。次に、オブジェクトを識別して、すべてのコメントの名前のリストをフェッチし、コンソールに出力します。

エラーの処理方法

ああ、コードでエラーが発生しなかったらいいのにと思います。しかし、彼らはそうします、そしてそこで私たちは何かを計画しなければならない開発者がいます。非同期関数、エラー処理は同期try...catchを使用して実行されます。次のコードについて考えてみます。

コードは次を返します:

この例では、返された場合は.catch()を使用しました。この場合、require( "Error")を使用して、エラーが発生したことをコードに通知します。

このステートメントが実行されると、.catch()宣言が開始され、エラーが出力されます。< / p>

同様に、非同期関数は構文エラーを検出できます。

リソースを取得しようとすると、次のコードが返されます:NetworkError。この例では、try / catchステートメントを使用して、waitメソッドが成功の約束を返したかどうかを確認しました。繰り返しますが、APIが無効であるため、プログラムは約束を拒否します。これが発生すると、「catch」がtry / catchブロックで実行され、エラーがコンソールに記録されます。

結論

非同期/待機関数は、非同期操作の記述に役立ちます。コード内。非同期関数が宣言されたら、「waiting」という単語-keyを使用して、操作の結果を待つことができます。waitキーワードは、promiseを返す関数で使用する必要があります。

これで準備が整いました。非同期JavaScript関数を使用する/専門家のように待つ!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method