美文网首页
ES6的学习(下)

ES6的学习(下)

作者: 天问ing | 来源:发表于2019-01-03 21:53 被阅读0次

promise:异步操作同步化

同步 -- 串行 简单、方便
异步 -- 并行 性能高、体验好
promise的是为了解决回调地狱的问题
注意:要了解具体详细的内容,请点击这里

generator:生成器

generator与普通的函数有所不同的是它可以将函数分块执行,返回的是一个generator对象,通过next继续往下执行,其中,函数体里面的yeild可以作为分割函数执行的标识,有以下两个操作:
    (1)、yeild可以作为参数

function* show() {
    alert("aaa");
    let a = yield;
    alert("bbb"+a);
}
let gen = show();
gen.next();
gen.next("最近过得还好吗");
执行结果:先弹出aaa,再弹出bbb最近过得还好吗

    (2)、yeild可以作为返回值进行使用,类似与return

function* show() {
    alert("aaa");
    yield "哈哈";
    alert("bbb");
    return "函数执行完毕";
}
let gen = show();
let res1 = gen.next(); console.log(res1); //{value: "哈哈", done: false}
let res2 = gen.next(); console.log(res2); //{value: "函数执行完毕", done: true}

async/await

async和await也是一种将异步操作同步化的方式,是新的语法糖,使得代码更加简洁,逻辑更加清晰

//使用async和await处理异步逻辑,代码简洁,逻辑清晰
async function show(){
    let data1 = await $.ajax({url: "1.txt", dataType: "json"});
    let data2 = await $.ajax({url: "2.txt", dataType: "json"});
    let data3 = await $.ajax({url: "3.txt", dataType: "json"});
    console.log(data1,data2,data3);
}
show();

await可以用以接收peomise、generator等等

function sleep(sec){
    return new Promise(resolve => {
        setTimeout(()=>{
            resolve();
        },sec*1000)
    })
}
(async function(){
    alert("aaa");
    await sleep(1);
    alert("bbb");
    await sleep(1);
    alert("ccc");
})()
执行结果:先弹出aaa,隔1s弹出bbb,再隔1s弹出ccc

async/await的错误处理机制,直接使用try{}catch(e){}操作即可

async function show(){
    try{
        let data1 = await $.ajax({url: "1.txt", dataType: "json"});
        let data2 = await $.ajax({url: "2.txt", dataType: "json"});
        let data3 = await $.ajax({url: "3.txt", dataType: "json"});
        console.log(data1,data2,data3);
    }catch(e){
        console.log("请求数据失败了");
    }
}
show();

相关文章

  • ES6的学习(下)

    promise:异步操作同步化 同步 -- 串行 简单、方便异步 -- 并行 性能高、体验好promise的是...

  • 谈谈JS的那些文件模块系统

    学习ES6和Webpack过程中,研究了一下CommonJS,AMD, CMD, ES6这些模块系统到底有什么区别...

  • ES6 学习笔记(下)

    认真学习了一遍ES6,发现很多很好用的功能。学习资料:《ECMAScript 6 入门》 好啦,继续下半部分的学习...

  • babel的安装

    babel是编写js时es6风格转换为es5的编译器,今天尝试了一下安装了一个babel,准备学习一下es6。安装...

  • 【一起来烧脑】入门ES6体系

    为什么要学习ES6掌握ES3、ES5、ES6的联系和区别 快速入门ES6 学会快速构建ES6的编译环境 学习ES6...

  • ES6特性学习(一)

    本篇对ES6的let、const进行了学习和整理,以及与var做一下简单的对比。 let命令 let是ES6中新增...

  • ES6语法的用法总结

    有很多小伙伴对ES6新增语法有不懂,我们今天就来简单学习一下 一、ES6简介 ECMAScript 6(以下简称E...

  • es6学习

    学习es6

  • ES6系列之Set和Map

    今天,我们来学习一下ES6中新增的两个数据结构:Set和Map。 Set ES6 提供了新的数据结构 Set。它类...

  • ES6

    ES6 主要学习来自 学习资源另外如果用webstorm的同学记得把javascript设置可支持es6,具体的话...

网友评论

      本文标题:ES6的学习(下)

      本文链接:https://www.haomeiwen.com/subject/ggtcrqtx.html