掌握JavaScript中的迭代器和生成器,顺便了解一下async、await的原理.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
JavaScript 中的迭代器和生成器,async/await 原理详解 迭代器(Iterator)是确使用户在容器对象(链表或数组)上遍访的对象,使用该接口无需关心对象的内部实现细节。迭代器是一个对象,可用于帮助我们对某个数据结构(链表、数组)进行遍历。在 JavaScript 中,迭代器也是一个具体的对象,并且这个对象必须符合迭代器协议(iterator protocol)。 迭代器协议(iterator protocol)是指这个对象必须实现一个特定的 next 方法,并且 next 方法有如下要求: * next 方法可接收 0 个或者 1 个参数(在生成器中 next 可以接收 1 个参数),并且需返回一个对象,对象包含以下两个属性: + done:值为 Boolean,如果迭代器可以迭代产生下一个值,就为 false,如果已经迭代完毕,就为 true; + value:迭代器返回的值,如果 done 为 true,value 一般为 undefined。 编写一个最简单的迭代器: ``` const iterator = { next: function() { return { done: false, value: 123 } } } ``` 迭代器的基本使用: 明白了迭代器的基本定义,下面就来实现一下符合迭代器协议的对象吧,并且看看其它的一些基本用法。比如,需要通过迭代器访问一个数组: ``` const names = ['curry', 'kobe', 'klay'] let index = 0 // 通过一个 index 来记录当前访问的位置 const iterator = { next() { if (index < names.length) { return { done: false, value: names[index++] } } else { return { done: true, value: undefined } } } } ``` 实现生成迭代器的函数: 如果每次需要去访问一个数组就去编写一个对应的迭代器对象肯定是很麻烦的;可以封装一个函数,用于生成一个访问数组的迭代器。 ``` function createIterator(arr) { let index = 0 return { next() { if (index < arr.length) { return { done: false, value: arr[index++] } } else { return { done: true, value: undefined } } } } ``` 使用生成器实现迭代器: 生成器(Generator)是一个特殊的迭代器,使用 function* 声明,具有自动实现迭代器协议的能力。 ``` function* createGenerator(arr) { for (let i = 0; i < arr.length; i++) { yield arr[i] } } ``` async/await 的原理: async/await 是 Promise+生成器的语法糖,其原理是使用生成器来实现异步操作。当 async 函数执行时,实际上是执行了一个生成器,生成器会 yield 出一个 Promise 对象,async/await 语句的返回值实际上是这个 Promise 对象的结果。 迭代器和生成器是 JavaScript 中两个非常重要的概念, async/await 的原理也是建立在这两个概念之上的。通过掌握迭代器和生成器,可以更好地理解 async/await 的原理,并且更好地应用 async/await 在实际开发中。
剩余18页未读,继续阅读
- 粉丝: 1
- 资源: 2837
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助