1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-28 13:02:21 +00:00

fix generator

This commit is contained in:
ruanyf 2015-12-24 20:17:14 +08:00
parent 61d2f36c9c
commit 769ef139b1

View File

@ -406,13 +406,10 @@ Generator函数返回的遍历器对象都有一个`throw`方法,可以在
```javascript ```javascript
var g = function* () { var g = function* () {
while (true) { try {
try { yield;
yield; } catch (e) {
} catch (e) { console.log('内部捕获', e);
if (e != 'a') throw e;
console.log('内部捕获', e);
}
} }
}; };
@ -429,7 +426,7 @@ try {
// 外部捕获 b // 外部捕获 b
``` ```
上面代码中,遍历器对象`i`连续抛出两个错误。第一个错误被Generator函数体内的`catch`语句捕获此时Generator函数就算执行完成了不会再继续执行了遍历器对象`i`第二次抛出错误由于Generator函数内部的`catch`语句已经执行过了不会再捕捉到这个错误了所以这个错误就被抛出了Generator函数体被函数体外的`catch`语句捕获。 上面代码中,遍历器对象`i`连续抛出两个错误。第一个错误被Generator函数体内的`catch`语句捕获。`i`第二次抛出错误由于Generator函数内部的`catch`语句已经执行过了不会再捕捉到这个错误了所以这个错误就被抛出了Generator函数体被函数体外的`catch`语句捕获。
注意,不要混淆遍历器对象的`throw`方法和全局的`throw`命令。上面代码的错误,是用遍历器对象的`throw`方法抛出的,而不是用`throw`命令抛出的。后者只能被函数体外的`catch`语句捕获。 注意,不要混淆遍历器对象的`throw`方法和全局的`throw`命令。上面代码的错误,是用遍历器对象的`throw`方法抛出的,而不是用`throw`命令抛出的。后者只能被函数体外的`catch`语句捕获。