generator
6262 ワード
generator?
iterator/iterableを簡単に作成できるジェネレータはgenerator関数から返されるオブジェクトで、iteratorプロトコルに従います.(ジェネレータは反復器で、要件を満たしているため)
iteratorは、nextメソッドに加えて、所定の値を返すreturnメソッドとerrorを渡すthrowメソッドを有する.(反復器はジェネレータではありません)
また、Symbol.反復器メソッドがあるので、iterableでもあります.(反復器でもありiterableでもあります!)
generator関数の呼び出し=>generator
//generator function
function* generatorFn(i) {
yield i + 1;
yield "a";
yield false;
}
const generator = generatorFn(10);
console.debug(generator.next().value);
console.debug(generator.next().value);
generator.return();
console.debug(generator.next().value);
const generator2 = generatorFn(20);
console.debug([...generator2]);
result
1
"a"
"undefined"
[21, "a", false]
次の方法
generator関数を呼び出すときにパラメータを渡すために使用されるため、上記の例でも見られます.ただしnextメソッドを呼び出すとパラメータを渡すこともできます.
function* generatorFn(param) {
console.log("start!");
let result;
result = yield param;
return result;
}
const generator = generatorFn(0);
console.log(generator.next());
console.log(generator.next(1));
yeildキーワードnext関数のキーワード.ただし、置換されたyeildキーワードは、値の戻り({next:---value:--})が完了したyeildであるため、最初のnextメソッド呼び出し時に伝達パラメータも返されたyeldキーワードが完了しないため、意味がない.Reference
この問題について(generator), 我々は、より多くの情報をここで見つけました https://velog.io/@commitnpush/generatorテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol