async/await和Generator 的优势

271 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天
点击查看活动详情
一、日常前端代码开发中,有哪些值得用 ES6 去改进的编程优化或者规范
1、常用箭头函数来取代 var self = this;的做法。
2、常用 let 取代 var 命令。
3、常用数组/对象的结构赋值来命名变量,结构更清晰,语义更明确,可读性更好。
4、在长字符串多变量组合场合,用模板字符串来取代字符串累加,能取得更好地效果和阅读体验。
5、用 Class 类取代传统的构造函数,来生成实例化对象。
6、在大型应用开发中,要保持 module 模块化开发思维,分清模块之间的关系,常用 import、export 方法。

二、理解 async/await 以及对 Generator 的优势
async await 是用来解决异步的,async 函数是 Generator 函数的语法糖
使用关键字 async 来表示,在函数内部使用 await 来表示异步
async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数
当函数执行的时候,一旦遇到 await 就会先返回,等到异步操作完成,再接着执行函数体内后面的语句

async 较 Generator 的优势:
内置执行器。Generator 函数的执行必须依靠执行器,而 Aysnc 函数自带执行器,调用方式跟普通函数的调用一样更好的语义。async 和 await 相较于 * 和 yield 更加语义化更广的适用性。yield 命令后面只能是 Thunk 函数或 Promise 对象,async 函数的 await 后面可以是 Promise 也可以是原始类型的值返回值是 Promise。async 函数返回的是 Promise 对象,比 Generator 函数返回的 Iterator 对象方便,可以直接使用 then() 方法进行调用
generator 函数就是一个封装的异步任务,也就是异步任务的容器,执行 Generator 函数会返回一个遍历器对象,async 函数的实现,就是将 Generator 函数和自动执行器,包装在一个函数里