ホームページ > 記事 > ウェブフロントエンド > JSでジェネレーターを非同期に実装する方法
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
メソッド: 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 の後にはサンク関数が続く必要があります。
以上がJSでジェネレーターを非同期に実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。