ES 6を深く理解する――サブエージェントとジェネレータ(Generator)
11543 ワード
ES 6を深く理解する――サブエージェントとジェネレータ(Generator)
記事の目次 ES 6を深く理解する、シーケンサとジェネレータ ローズマリー ジェネレータ 生成器オブジェクトの方法 は、反復可能なオブジェクトおよび‘for-of’サイクル を有する.は、デフォルトのディショナー にアクセスします.は、反復可能なオブジェクト を作成する.内に、ローズマリー を構築する.集合オブジェクト 文字列スキニー NodeList Disc アドバンスドディショナーの機能 ローズマリーに を伝えます.エラーをスローしました. 生成器戻り文 委託ジェネレータ 非同期タスク実行 簡単タスク実行器 は、タスク実行器にデータを転送する .非同期タスク実行器 生成器の出現は、追跡for巡回反復変数
サンデー
ディケンサは特殊なオブジェクトで、反復プロセスのために特別に設計された専用インターフェースを持っています.すべてのディケンサには
例:
生成器は、サンデーを返す関数です.
矢印関数ではサブジェネレータを生成できません.
例:
オブジェクトにジェネレータを追加できます.
反復可能なオブジェクトおよび
反復可能なオブジェクトは
for−ofサイクルは、実行される度に、反復可能なオブジェクトの
例:
集合オブジェクト entries() values() keys() 文字列ローズマリー
ノードリスト
Nodes Listコード文書ページのすべての要素の集合
アドバンスドローズマリーの機能
サンデーに参席する
ローズマリーにエラーを投げます.
ジェネレータはステートメントを返します.
非同期タスクの実行
簡単なタスク実行器
非同期タスク実行器
記事の目次
i
の複雑さを除去し、サイクル中のエラーを低減することを目的とする.サンデー
ディケンサは特殊なオブジェクトで、反復プロセスのために特別に設計された専用インターフェースを持っています.すべてのディケンサには
next()
方法があります.毎回呼び出して、結果の対象に戻します.その結果、オブジェクトは2つの属性があります.一つはvalue
で、次の戻り値を表します.もう一つはdone
であり、これはブールタイプの値であり、現在は戻り可能なデータがない場合はtrue
に戻る.また、次の利用可能な値を返すために、現在のセットの中の値の位置を指す内部ポインタも格納されています.例:
function createIterator(items) {
var i = 0
return {
next: function() {
var done = (i >= items.length)
var value = !done ? items[i++] : undefined
return {
done: done,
value: value
}
}
}
}
var iterator = createIterator([1,2,3])
console.log(iterator.next())
console.log(iterator.next())
console.log(iterator.next())
//
console.log(iterator.next())
生成器生成器は、サンデーを返す関数です.
next()
キーの後にfunction
を追加して定義し、*
キーを使用してディンブラに戻る.矢印関数ではサブジェネレータを生成できません.
例:
function *createIterator() {
yield 1;
yield 2;
yield 3;
}
// ,
let iterator = createIterator();
console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
console.log(iterator.next().value); // 3
オブジェクトを生成する方法オブジェクトにジェネレータを追加できます.
反復可能なオブジェクトおよび
yield
サイクル反復可能なオブジェクトは
for-of
属性を有する.for−ofサイクルは、実行される度に、反復可能なオブジェクトの
Symbol.iterator
方法を呼び出し、その結果オブジェクトのnext()
属性を変数に格納し、オブジェクトのvalue
属性の値がdone
属性になるまでループは継続的に実行される.例:
let values = [1,2,3];
for(let num of values) {
console.log(num)
}
//
// 1
// 2
// 3
デフォルトのローズマリーにアクセスtrue
反復可能なオブジェクトを作成Symbol.iterator
ローズマリー集合オブジェクト
ノードリスト
Nodes Listコード文書ページのすべての要素の集合
アドバンスドローズマリーの機能
サンデーに参席する
*[Symbol.iterator]() {}
を通じて次のローズマリーに伝えます.ローズマリーにエラーを投げます.
ジェネレータはステートメントを返します.
function *createIterator() {
yield 1;
return; //
yield 2;
}
委託ジェネレータ非同期タスクの実行
簡単なタスク実行器
function run(taskDef) {
//
let task = taskDef();
//
let result = task.next();
// next()
function step() {
if(!result.done) {
result = task.next();
step()
}
}
//
step();
}
タスク実行器にデータを転送します.非同期タスク実行器