JS-JSON

<script>
    //我让隔壁老王买煎饼
    const getJianbing=mood=>new Promise((resolve,reject)=>{
        if (mood) {
            const jianbing={
                append:"山东煎饼",
                money:10
            }
            resolve(jianbing);
        }else{
            const reason=new Error("不买");
            reject(reason);
        
        }
    });

    getJianbing(false).then(value=>{
        console.log("老王买了"+value.append+value.money);
    },
    error=>{
        console.log("老王告诉我"+error);
    });


    //图片下载,手动建img
注意:创建img标签在body中

        const loadImg=url=>new Promise((resolve,reject)=>{
        const img=new Image();
        img.src=url;
        img.οnlοad=()=>resolve(img);
        img.οnerrοr=()=>reject(url);
    });
    const img1=document.querySelector("img");
    loadImg("http://img.zcool.cn/community/0117e2571b8b246ac72538120dd8a4.jpg@1280w_1l_2o_100sh.jpg").then(value=>{img1.src=value.src});


    //图片下载,自动建img
        const loadImg2=url=>new Promise((resolve,reject)=>{
        const img=new Image();
        img.src=url;
        img.οnlοad=()=>resolve(img);
        img.οnerrοr=()=>reject(url);
    });
    loadImg("http://img.zcool.cn/community/0117e2571b8b246ac72538120dd8a4.jpg@1280w_1l_2o_100sh.jpg").then(value=>{document.body.appendChild(value)});

    //多图片下载地址
    const loadImge3=url=>new Promise((resolve,reject)=>{
        const img =new Image();
        img.src=url;
        img.οnlοad=()=>resolve(img);
        img.οnerrοr=()=>reject(url);
    });
    const promiseImage=[loadImge3("http://img07.tooopen.com/images/20170316/tooopen_sy_201956178977.jpg"),loadImge3("http://img.zcool.cn/community/01b34f58eee017a8012049efcfaf50.jpg@1280w_1l_2o_100sh.jpg"),loadImge3("http://www.qqma.com/imgpic2/cpimagenew/2018/4/5/6e1de60ce43d4bf4b9671d7661024e7a.jpg")];
    Promise.all(promiseImage).then(
        values=>{
            values.forEach(v=>document.body.appendChild(v));
        },
        error=>{
        }
    );


    //Genertor
    let tell=function *(){
        yield 'a';
        yield 'b';
        yield 'c';
        return 12;
    }
    let k=tell();
    console.log(k.next());    //输出结果a
    console.log(k.next());    //输出结果b
    console.log(k.next());    //输出结果c
    console.log(k.next());    //输出return12值

    //模拟抽奖
    let draw =function(count){
        console.log(`剩余多少${count}次`);
    }
    let resider =function *(count){
        while(count>0){
            count--;
            yield draw(count);
        }
    }
    let start =resider(5);
    let btn =document.createElement("BUTTON");
    btn.id="start";
    btn.textContent="抽奖";
    document.body.appendChild(btn);
    document.getElementById("start").addEventListener("click",function(){
        start.next();
    },false);

    //其他案例
    function *show(){
        console.log("red");
        let n=yield;
        console.log(n);
        console.log("green");
    }
    const s=show();
    s.next(1);


    //面试题
    function *fn1(){
        for(let i=0;true;i++){
            const result=yield i;
            if(result){
                i=-1;
            }
        }
    }
    const f = fn1();
    console.log(f.next());
    console.log(f.next());
    console.log(f.next(true));
    console.log(f.next());
</script>


 

<script>
    //ajax
    const ajax=(url,succ,fall)=>{
        const xhr=new XMLHttpRequest();
        xhr.open("GET",url);
        xhr.onreadystatechange=function(){
            console.log("aaa");
            if (this.readyState==4) {
                if (this.status===200) {
                    succ(this.response);
                }else{
                    fall(this.responseText);
                }
            }
        }
        xhr.send();
    };

    const divs =document.querySelectorAll("div");

    //普通函数的调用ajax
    ajax("js/a.txt",function(data){
        divs[0].innerHTML=data
    });*/

    /*//promise
    new Promise(resolve=>ajax("js/a.txt",resolve)).then(
        value=>{
            divs[0].innerHTML=value
            return new Promise(resolve=>ajax("js/b.txt",resolve));
        }
    ).then(
        value=>{
            divs[1].innerHTML=value
        }
    );

    //Genrator
    function *ajaxs(){
        divs[0].innerHTML=yield request("js/a.txt");
        divs[1].innerHTML=yield request("js/b.txt");
        divs[2].innerHTML=yield request("js/c.txt");
    };
    const aj=ajaxs();
    aj.next();
    function request(url){
        ajax(url,data=>aj.next(data));
    };

    //Async是Genrator的语法糖
    //语法糖:箭头函数是普通函数的语法糖
    //优点1.内置执行器 2.更好的语义 3.更好的适用性 4.Genrator不能用箭头函数 5.返回值Promise
    //缺点1.ES7

    async function fn1(){
        return "jw";
    }
    
    const p=fn1();
    console.log(p);

    p.then(
        value=>console.log(value)
    );


    //装饰,修饰器:是一个函数,用来改变类的行为
    //第一个修饰器作用:不能修改属性

    let readonly =function(target,name,descriptor){
        descriptor.writable=false;
        return descriptor;
    };
    //装饰器属性不能超过100
    let max_100=function(target,name,descriptor){
        if (target.name>100) {
             Throw  = new Error("设置错误");
        }
    }
    //装饰器多一个Name属性叫HELLO
    let duo_name=function(target,name,descriptor){
        target.myName="HELLO";
    }

    

    @duo_name
    class Person{
        //不能修改,属性不能超过100
        @readonly
        @max_100
            time(){
                return '2019-01-01';
            }
    };
    console.log(Person.myName);//构造的就多一个属性 
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值