es6 迭代器对象的 return(),throw()
迭代器对象的 return(),throw()
迭代器对象除了具有next()
方法,还可以具有return()
方法和throw()
方法。如果你自己写迭代器对象生成函数,那么next()
方法是必须部署的,return()
方法和throw()
方法是否部署是可选的。
return()
方法的使用场合是,如果for...of
循环提前退出(通常是因为出错,或者有break
语句或continue
语句),就会调用return()
方法。如果一个对象在完成遍历前,需要清理或释放资源,就可以部署return()
方法。
function readLinesSync(file) {
return {
next() {
return { done: false };
},
return() {
file.close();
return { done: true };
},
};
}
上面代码中,函数readLinesSync
接受一个文件对象作为参数,返回一个迭代器对象,其中除了next()
方法,还部署了return()
方法。下面的三种情况,都会触发执行return()
方法。
// 情况一
for (let line of readLinesSync(fileName)) {
console.log(line);
break;
}
// 情况二
for (let line of readLinesSync(fileName)) {
console.log(line);
continue;
}
// 情况三
for (let line of readLinesSync(fileName)) {
console.log(line);
throw new Error();
}
上面代码中,情况一输出文件的第一行以后,就会执行return()
方法,关闭这个文件;情况二输出所有行以后,执行return()
方法,关闭该文件;情况三会在执行return()
方法关闭文件之后,再抛出错误。
注意,return()
方法必须返回一个对象,这是 Generator 规格决定的。
throw()
方法主要是配合 Generator 函数使用,一般的迭代器对象用不到这个方法。请参阅《Generator 函数》一章。
es6 迭代器对象的 return(),throw()相关推荐
- es6 迭代器_揭秘ES6迭代器和迭代器
es6 迭代器 by Tiago Lopes Ferreira 由Tiago Lopes Ferreira 揭秘ES6迭代器和迭代器 (Demystifying ES6 Iterables & ...
- ES6 迭代器与生成器(非常详细、容易理解)
下面是对ES6中迭代器和生成器的整理,非常详细.容易理解,希望可以帮助到有需要的小伙伴~ 文章目录 迭代器是什么 Iterator接口 迭代协议 for...of语句的用法 返回迭代器对象的方法 与f ...
- 【ES6】对象的拓展
[ES6]对象的拓展 一.对象的两种表示法[掌握] 1)简洁表示法 2)属性名表达式法 二.Object.is()[了解] 三.Object.assign()[了解] 查看更多ES6教学文章: 参考文 ...
- python学习Day14 带参装饰器、可迭代对象、迭代器对象、for 迭代器工作原理、枚举对象、生成器及生成表达式...
复习 函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.返回内部函数对象----> 延迟执行, 开放封闭原则: 功能可以拓展,但源代 ...
- 传入json对象_【Python基础】可迭代对象amp;迭代器对象及其实现
可迭代对象 首选确保for循环的in后面是一个可迭代对象,这样就能通过python内置函数iter()得到一个迭代器对象(iterator) 我们分别把列表list_test和字符串str_test分 ...
- 第九节:ES6为对象做了哪些扩展?
ES6不仅为字符串.数值和数组带来了扩展,也为对象带来了很多新特性.这一节,我们来一起学习一下对象的扩展. 对象的传统表示法 我们回顾一下,对象的传统表示法: let person = { " ...
- python迭代-可迭代对象与迭代器对象
可迭代对象与迭代器对象 问题举例 某软件要求,从网络抓取各个城市的气温信息,并依次显示: 北京:15~22 上海:18~23 ...... 如果一次抓取所有城市气温信息再显示,显示第一个城市的气温时会 ...
- es6调用c语言sdk,ES6 关于对象的扩展-contracts-WinFrom控件库|.net开源控件库|HZHControls官网...
今天来简单说下ES6 中对象的扩展 首先回顾传统的对象表示法 let person={ 'name':'zhang', 'age':'20', 'play':function(){ alert('pl ...
- python:迭代器对象,迭代器和迭代
学习目标: 一.了解迭代对象.迭代器和迭代的区别和联系. 二.迭代对象有哪些? 三.关于迭代器和生成器 1. 迭代器的定义: 2. 迭代器的创建: 3. 迭代器的判断. 四.迭代的使用 学习内容: P ...
最新文章
- 一文带你看懂Spring事务!
- MimbleWimble 系列之Pedersen 承诺
- linux 导入txt_手机混用闪存到底是真是假:教你查手机闪存型号|闪存|手机|linux|ufs|zip...
- mysql 生成数列_PHP生成器的创建和使用
- 12.Linux:exec函数族
- linux常用指令笔记(1)
- Divide by three, multiply by two CodeForces - 977D (思维排序)
- WinSock嗅探虚拟主机拿站取webshell
- php 中文键名 问题,PHP中使用asort进行中文排序失效的问题处理
- 通过Java和Spring Boot应用程序将Gmail用作SMTP服务器
- Linux中Docker部署Tomcat
- linux系统MongoDB4.0安装,密码设置,常用命令,集成springmvc
- 共享变量在线程间的可见性
- linux系统可以装sas吗,在SAS硬盘上Linux安装注意的事情。
- Meta分析在生态环境领域里的应用
- 分享五款可以大幅度提升办公效率的实用软件
- VS/C#添加chart控件
- ubuntu hashcat 安装
- win10系统开机出现grub,一步进入window系统
- python代码混淆工具,Python版代码混淆工具