1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

docs(generator): edit next method

This commit is contained in:
ruanyf 2016-02-24 18:48:08 +08:00
parent 689081f7d8
commit 098a3dc830
2 changed files with 7 additions and 7 deletions

View File

@ -599,7 +599,7 @@ var jsonData = {
let { id, status, data: number } = jsonData;
console.log(id, status, number)
// 42, OK, [867, 5309]
// 42, "OK", [867, 5309]
```
上面代码可以快速提取JSON数据的值。

View File

@ -235,7 +235,7 @@ function* foo(x) {
var a = foo(5);
a.next() // Object{value:6, done:false}
a.next() // Object{value:NaN, done:false}
a.next() // Object{value:NaN, done:false}
a.next() // Object{value:NaN, done:true}
var b = foo(5);
b.next() // { value:6, done:false }
@ -599,7 +599,7 @@ function log(generator) {
var v;
console.log('starting generator');
try {
v = generator.next(); // { value: undefined, done: true }
v = generator.next();
console.log('第一次运行next方法', v);
} catch (err) {
console.log('捕捉错误', v);
@ -1129,17 +1129,17 @@ var clock = function() {
上面代码的clock函数一共有两种状态Tick和Tock每运行一次就改变一次状态。这个函数如果用Generator实现就是下面这样。
```javascript
var clock = function*(_) {
var clock = function*() {
while (true) {
yield _;
console.log('Tick!');
yield _;
yield;
console.log('Tock!');
yield;
}
};
```
上面的Generator实现与ES5实现对比可以看到少了用来保存状态的外部变量ticking这样就更简洁更安全状态不会被非法篡改、更符合函数式编程的思想在写法上也更优雅。Generator之所以可以不用外部变量保存状态是因为它本身就包含了一个状态信息即目前是否处于暂停态。
上面的Generator实现与ES5实现对比可以看到少了用来保存状态的外部变量`ticking`这样就更简洁更安全状态不会被非法篡改、更符合函数式编程的思想在写法上也更优雅。Generator之所以可以不用外部变量保存状态是因为它本身就包含了一个状态信息即目前是否处于暂停态。
### Generator与协程