ホームページ  >  記事  >  ウェブフロントエンド  >  JSでジェネレーターを非同期に実装する方法

JSでジェネレーターを非同期に実装する方法

一个新手
一个新手オリジナル
2017-10-11 09:57:461798ブラウズ

1. Symbol データ型

ES6 で新たに追加された Symbol データ型。 Y [Symbol.iterator] 属性を持つデータ型: array、array array、map、set、

[symbol.iterator]

属性オブジェクト。 Iterator オブジェクト[Symbol.iterator]属性的对象,直接调用就可以生成一个Iterator对象

二、Iterator对象:是一个指针对象,遍历器对象

        方法:next():返回的格式为{value:    ,done:      }

                 使用for..of遍历: 每次遍历得到的是value值。              

三、Geneteror

  function*  G(){
             yield    200;
             yield    300;
            return  400;
       }
    var g=G();

      1.Generator不是一个函数,定义generator时,使用function*,使用yield来返回结果。

      2.调用Generator之后,它内部的代码不会立即执行,而是处于一个暂停的状态。并生成一个generator对象。

      3.遇到yield时,会执行yeild后面的表达式,并返回执行之后的值,然后再次进入暂停状态,此时done: false

2. Iterator オブジェクト: ポインター オブジェクト、イテレーター オブジェクトです

メソッド: next ():戻り値の形式は {Value:, Done:} です

トラバースするには For..of を使用します: value 値はトラバースごとに取得されます。

3. Geneterorrrreee

1. ジェネレーターは関数ではありません。ジェネレーターを定義する場合は、 function* と yield を使用して結果を返します。

2. Generatorを呼び出した後、その中のコードはすぐには実行されず、一時停止状態になります。そしてジェネレーターオブジェクトを生成します。

3.

yieldが発生すると、yieldは次のようになります。 >以下の式を実行し、実行後の値を返し、再び一時停止状態に入り、その時点でdone:false


ジェネレーターの戻り値も反復子オブジェクトなので、for..of

1 の next メソッドを使用できます。 next メソッドを使用すると、next のパラメーターは実行された yield の前の値に渡されます。 2.yield* は、1 つの Generator 内で別の Generator を参照できます。

4. ジェネレーターは非同期操作を実装します

1. サンク関数が必要ですが、パラメーターはコールバック関数 1 つだけです

2. 通常、非同期操作をパッケージ化するために co ライブラリが使用され、これは便利ですそして簡潔です。 3.Yield の後にはサンク関数が続く必要があります。

4. ジェネレーターは依然としてコールバックに依存します 🎜🎜🎜🎜🎜 5. async-await: ジェネレーターの糖衣構文です 🎜🎜🎜🎜 🎜ジェネレーター🎜との比較: 🎜🎜🎜🎜 1. function* を async に置き換えますfunction 🎜🎜🎜🎜 2. yield を await🎜🎜🎜🎜 に置き換えます。 3. await の後に Promise オブジェクトが続きます。他のタイプのデータも使用できますが、非同期ではなく同期で実行されます。 🎜🎜🎜🎜🎜🎜🎜🎜

以上がJSでジェネレーターを非同期に実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。