0
私はGenerator.prototype.throw()
について学習しており、以下のコードをテストします。この場合Generator.prototype.throw()はどのように機能しますか?暗黙のnext()は含まれていますか?
var generator = function*() {
for(let i = 0; i < 10; i++) {
try {
var value = yield i;
console.log(i);
} catch(e) {
console.log("catch exception...");
}
}
};
var g = generator();
g.throw();
、エラーが言っスローされます「キャッチされていない未定義...」chrome v49
下。
ただし、最初にg.next()
を呼び出してからg.throw()
を呼び出すと正常に動作します。一方
var generator = function*() {
for(let i = 0; i < 10; i++) {
try {
var value = yield i;
console.log(i);
} catch(e) {
console.log("catch exception...");
}
}
};
var g = generator();
g.next(); // Object {value: 0, done: false}
g.throw(); // catch exception...
g.next();
// 1
// Object {value: 2, done: false}
g.next()
も実行されたかのように、i
値がスキップされています。
どうしますか?
ありがとうございます。私は 'throw()'もGenerator関数の本体に入ると考えました。私は間違っていたと思う... – wanderyt