mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-25 03:02:21 +00:00
docs(generator): edit next method
This commit is contained in:
parent
689081f7d8
commit
098a3dc830
@ -599,7 +599,7 @@ var jsonData = {
|
|||||||
let { id, status, data: number } = jsonData;
|
let { id, status, data: number } = jsonData;
|
||||||
|
|
||||||
console.log(id, status, number)
|
console.log(id, status, number)
|
||||||
// 42, OK, [867, 5309]
|
// 42, "OK", [867, 5309]
|
||||||
```
|
```
|
||||||
|
|
||||||
上面代码可以快速提取JSON数据的值。
|
上面代码可以快速提取JSON数据的值。
|
||||||
|
@ -235,7 +235,7 @@ function* foo(x) {
|
|||||||
var a = foo(5);
|
var a = foo(5);
|
||||||
a.next() // Object{value:6, done:false}
|
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:false}
|
a.next() // Object{value:NaN, done:true}
|
||||||
|
|
||||||
var b = foo(5);
|
var b = foo(5);
|
||||||
b.next() // { value:6, done:false }
|
b.next() // { value:6, done:false }
|
||||||
@ -599,7 +599,7 @@ function log(generator) {
|
|||||||
var v;
|
var v;
|
||||||
console.log('starting generator');
|
console.log('starting generator');
|
||||||
try {
|
try {
|
||||||
v = generator.next(); // { value: undefined, done: true }
|
v = generator.next();
|
||||||
console.log('第一次运行next方法', v);
|
console.log('第一次运行next方法', v);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log('捕捉错误', v);
|
console.log('捕捉错误', v);
|
||||||
@ -1129,17 +1129,17 @@ var clock = function() {
|
|||||||
上面代码的clock函数一共有两种状态(Tick和Tock),每运行一次,就改变一次状态。这个函数如果用Generator实现,就是下面这样。
|
上面代码的clock函数一共有两种状态(Tick和Tock),每运行一次,就改变一次状态。这个函数如果用Generator实现,就是下面这样。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var clock = function*(_) {
|
var clock = function*() {
|
||||||
while (true) {
|
while (true) {
|
||||||
yield _;
|
|
||||||
console.log('Tick!');
|
console.log('Tick!');
|
||||||
yield _;
|
yield;
|
||||||
console.log('Tock!');
|
console.log('Tock!');
|
||||||
|
yield;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
上面的Generator实现与ES5实现对比,可以看到少了用来保存状态的外部变量ticking,这样就更简洁,更安全(状态不会被非法篡改)、更符合函数式编程的思想,在写法上也更优雅。Generator之所以可以不用外部变量保存状态,是因为它本身就包含了一个状态信息,即目前是否处于暂停态。
|
上面的Generator实现与ES5实现对比,可以看到少了用来保存状态的外部变量`ticking`,这样就更简洁,更安全(状态不会被非法篡改)、更符合函数式编程的思想,在写法上也更优雅。Generator之所以可以不用外部变量保存状态,是因为它本身就包含了一个状态信息,即目前是否处于暂停态。
|
||||||
|
|
||||||
### Generator与协程
|
### Generator与协程
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user