ホームページ  >  記事  >  ウェブフロントエンド  >  Generator関数とasync関数の違いの紹介

Generator関数とasync関数の違いの紹介

不言
不言転載
2019-04-04 11:28:152312ブラウズ

この記事ではジェネレーター関数と非同期関数の違いについて紹介します。一定の参考値があります。困っている友人は参考にしてください。お役に立てれば幸いです。

ジェネレーター関数:

ジェネレーター関数は、ES2015 によって提供される非同期ソリューションであり、通常の関数とは大きく異なります;

特徴:

1. 関数キーワードの後に​​ (*) 記号を付けます;

2. 関数本体内の状態として yield 式を使用します;

ジェネレーター関数はトラバーサーを返します。各状態は for...of メソッドを通じてトラバースできます;

使用法:

ジェネレーターを実行しますが、すぐには実行されません。トラバーサーを返します。トラバーサーは next() を呼び出して throw します。 () または return() は次の状態を実行し、エラーをキャプチャするか、トラバーサーを終了します;

async 関数:

async 関数は、ES2017 によって提供される非同期関数構文です。これはジェネレーターの構文シュガーですが、その使用法は依然としてジェネレーター関数とは大きく異なります;

機能:

1. 関数キーワードの前に async キーワードを続けます;

2. 関数本体内で await 式を使用します;

async 関数は Promise オブジェクトを返します;

使用法:

async 関数を実行すると、次のようにすぐに実行されます。通常の関数ですが、Promise オブジェクトを返します;

2 つの比較:

1. ジェネレーターは ES2015 に登場し、async は ES2017 に登場し、async は構文糖衣ですジェネレーターの;

2. 実行方法が異なります。ジェネレーターの実行には、エグゼキューター (next() およびその他のメソッド) の使用が必要です。async 関数には独自のエグゼキューターがあり、これは次の関数の実行と同じです。通常の関数;

3. async の構文とセマンティクスはより明確です、async は非同期を意味し、await は待機を意味します; Generator 関数の (*) 数値と yield のセマンティクスはそれほど直接的ではありません;

4. ジェネレーターの Yield の後には、サンク関数または Promise オブジェクトのみを続けることができます。また、async 関数の await の後には、Promise オブジェクトまたはプリミティブ型の値を続けることができます (これらは自動的に Promise に変換されます)。すぐに解決されるオブジェクト);

5. 戻り値が異なります。Generator は Promise オブジェクトを返す async と比較して、トラバーサーを返します。操作がより面倒です。

【関連する推奨事項: JavaScript ビデオ チュートリアル ]

以上がGenerator関数とasync関数の違いの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。