一、asyc与await:
async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。async 函数中可能会有 await 表达式,async 函数执行时,如果遇到 await 就会先暂停执行 ,等到触发的异步操作完成后,恢复 async 函数的执行并返回解析值。 await 关键字仅在 async function 中有效。如果在 async function 函数体外使用 await ,你只会得到一个语法错误,以下程序为例:
function say(msg,time){
return new Promise((resolve,reject)=>{
setTimeout(()=>resolve(msg),time)
})
}
async function item(){
var r1=await say("你好",2000);
console.log(r1);
var r2=await say("我取五个亿",2000);
console.log(r2);
return r1+r2;
}
item()
.then(res=>console.log(res));
function *bujd(){
yield "abb";
yield "abc";
yield "笑尘";
}
var list=bujd()。
l
二、迭代器(Iterators)
迭代器允许每次访问数据集合的一个元素,当指针指向数据集合最后一个元素时,迭代器便会退出。它提供了 next() 函数来遍历一个序列,这个方法返回一个包含 done 和 value 属性的对象。
var arr = [11,12,13];
var r1 = arr[Symbol.iterator]();
在控制台中输入r1.next()后会逐渐输出arr中的值。
三、Generator生成器
Generator 函数是 ES6 的新特性,它允许一个函数返回的可遍历对象生成多个值。 在使用中你会看到 * 语法和一个新的关键词 yield:
function *infinite() {
var n = 1;
while (true){
yield n++;
}
}
四、proxy代理
Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。
var obj={
name:"晴天",
age:18
};
var o=new Proxy(obj,{
get:function(target,prop){
if(prop in target){
return target[prop]
}
else{
return "嗯嗯"
}
}
})
set :function(target,prop,value){
if(prop==="age"){
if(value>200||value<0){
throw RangeError("出错啦!")
};
else{
target[prop]=value;
}
};
else{
target[prop]=value;
}
}。