修改iterator

This commit is contained in:
Ruan Yifeng
2015-03-06 12:16:34 +08:00
parent db97b33931
commit efb2ef93e7
2 changed files with 4 additions and 2 deletions
+2 -2
View File
@@ -4,7 +4,7 @@
### 概念
JavaScript原有的数据结构,主要是数组(Array)和对象(Object),ES6又添加了Map和Set,用户还可以组合使用它们,定义自己的数据结构。这就需要一种统一的接口机制,来处理所有不同的数据结
JavaScript原有的数据结构,主要是数组(Array)和对象(Object),ES6又添加了Map和Set,用户还可以组合使用它们,定义自己的数据结构。这就需要一种统一的接口机制,来处理所有不同的数据结
遍历器(Iterator)就是这样一种机制。它属于一种接口规格,任何数据结构只要部署这个接口,就可以完成遍历操作,即依次处理该结构的所有成员。它的作用有两个,一是为各种数据结构,提供一个统一的、简便的接口,二是使得数据结构的成员能够按某种次序排列。在ES6中,遍历操作特指for...of循环,即Iterator接口主要供for...of消费。
@@ -260,7 +260,7 @@ let arr = ['b', 'c'];
上面代码的扩展运算符内部就调用iterator接口。
实际上,这提供了一种简便机制,可以将任何部署了iterator接口的对象,转为对象
实际上,这提供了一种简便机制,可以将任何部署了iterator接口的数据结构,转为数组。也就是说,只要某个数据结构部署了iterator接口,就可以对它使用扩展运算符,将其转为数组
```javascript
+2
View File
@@ -472,6 +472,8 @@ async function asyncValue(value) {
上面代码中,asyncValue函数前面有async关键字,表明函数体内有异步操作。执行的时候,遇到await语句就会先返回,等到timeout函数执行完毕,再返回value。
ES6将await增加为保留字。使用这个词作为标识符,在ES5是合法的,在ES6将抛出SyntaxError。
### 与Promise、Generator的比较
我们通过一个例子,来看Async函数与Promise、Generator函数的区别。