ES6中的一些函数使用

一、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;
                }
            }。


版权声明:本文为jskfz原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。