発電機にようやく ブロック内のイテレータの最終値にアクセスする方法がありますか?
function* generator() {
try {
var value1 = yield(1) // cannot use let here
var value2 = yield(2) // cannot use let here
console.log('never gets here');
} finally {
return [value1, value2];
}
}
var iterator = generator(),
result0 = iterator.next(), // starts the generator
result1 = iterator.next("a"), // "a" gets assigned to value1
result2 = iterator.return("b"); // "b" does not get assigned to value2
console.log(result0); // { value: 1, done: false }
console.log(result1); // { value: 2, done: false }
console.log(result2); // { value: [ 'a', undefined ], done: true }
.return("b")
が{ value: 'b', done: true }
になってresult2
を得たが:はい、あなたは、単にreturn
最終値ができ
。しかし、上記コードreturn [value1, value2]
は"b"
を上書きします。これにより、finally
ブロックの最終結果にアクセスできます。
を上書きするかどうかに関係なく、処理のためにジェネレータ自体に渡されることはないため、(上書きされない場合)result2.value
としてのみアクセスできます。
「試行」の外で値を宣言するだけでいいですか? – Carcigenicate
いいえ、値は外部でiterator.return(value)によって決定されます。 –