主要知识点:迭代器、生成器、可迭代对象以及for-of循环、迭代器的高级功能以及建立异步任务处理器
![]()
《深刻理解ES6》笔记 目录segmentfault
迭代器是被设计专用于迭代的对象,带有特定接口。全部的迭代器对象都拥有 next() 方法,会返回一个结果对象。该结果对象有两个属性:对应下一个值的 value ,以及一个布尔类型的 done ,其值为 true 时表示没有更多值可供使用。
ES5实现迭代器的代码以下:异步
function createIterator(items) { var i = 0; return { next: function() { var done = (i >= items.length); var value = !done ? items[i++] : undefined; return { done: done, value: value }; } }; } var iterator = createIterator([1, 2, 3]); console.log(iterator.next()); // "{ value: 1, done: false }" console.log(iterator.next()); // "{ value: 2, done: false }" console.log(iterator.next()); // "{ value: 3, done: false }" console.log(iterator.next()); // "{ value: undefined, done: true }" // 以后的全部调用 console.log(iterator.next()); // "{ value: undefined, done: true }"
生成器( generator )是能返回一个迭代器的函数。生成器函数由放在 function 关键字以后的一个星号( * )来表示,并能使用新的 yield 关键字。函数
// 生成器 function *createIterator() { yield 1; yield 2; yield 3; } // 生成器能像正规函数那样被调用,但会返回一个迭代器 let iterator = createIterator(); console.log(iterator.next().value); // 1 console.log(iterator.next().value); // 2 console.log(iterator.next().value); // 3