promise
- promise.all,关键步骤,map(p => p.catch(e => e)) 在每个请求后加上 catch 捕获错误,确保promise能正常执行走到.then中
- promise.race的用法:谁跑的快,以谁为准执行回调。
race的使用场景:
比如我们可以用race给某个异步请求设置超时时间,并且在超时后执行相应的操作,代码如下:如果5秒钟图片还未成功返回,那么timeout就跑赢了,则进入catch,报出“图片请求超时”的信息。
迭代器(Iterator)
它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。
for...of...
遍历 Array 可以采用下标循环,遍历 Map 和 Set 就无法使用下标。为了统一集合类型,ES6 标准引入了新的 iterable 类型,Array、Map 和 Set 都属于 iterable 类型。
具有 iterable 类型的集合可以通过新的 for ... of 循环来遍历,但是不能遍历对象,因为没有迭代器对象,与forEach()不同的是,它可以正确响应break、continue和return语句 for of遍历的只是数组内的元素,而不包括数组的原型属性method和索引
for...in...
for in更适合遍历对象,会遍历对象所有的可枚举属性,包括原型,尽量不要使用for in遍历数组。Object.keys()只会遍历对象的可枚举属性
proxy
定义:对外界的访问进行过滤和改写。
get(target, propKey, receiver)
:拦截对象属性的读取,receiver-接收者,也就是当前的proxy实例
set(target, propKey, value, receiver)
:拦截对象属性的设置
apply(target, object, args)
:拦截 Proxy 实例作为函数调用的操作,比如proxy(…args)、
proxy.call(object, …args)
、proxy.apply(…)
。
Set数据类型
数学上的集合,类似数组。但是集合中元素都是唯一的,没有重复的值。通常用来数组去重
Set let set = new Set(类数组);
构造函数接收一个类数组元素(例如,字符串,HTMLCollection,NodeList)当作参数,用来初始化 Set 对象
size
:表示集合中的元素个数
add(value)
:添加元素,如果已经存在则不会添加
clear()
清空一个 set 对象中的所有元素,并返回 undefined
delete(value)
方法可以从一个 Set 对象中删除指定的元素。参数 value 是要删除的值。成功删除返回 true,否则返回 false。
Map数据类型
普通对象的键只能是字符串,如果不是字符串也会被转换成字符串,Map数据类型的键可以是任何数据类型
set(key,value)
,添加key-value
has(key)
,判断是否存在key
get(key)
,获取对应key的值
delete(key)
, 删除对应的key以及value