码迷,mamicode.com
首页 > 其他好文 > 详细

ES7中的async和await

时间:2018-04-25 17:02:28      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:遇到   分享图片   标准   方式   font   inf   func   base   query   

ES7中的async和await

在上一章中,使用Promise将原本的回调方式转换为链式操作,这就将一个个异步执行的操作串在一条同步线上了。下一次的操作必须等待当前操作的结束。

使用Promise的最后,遇到了一个问题,就是如果要对已经获得数据数组进行遍历,并在遍历中继续对每一条数据做异步请求操作,这就构成了一个树状查询。

蠢办法

对于上述问题,我们完全可以用上一章中的垃圾代码来构建一个for循环的嵌套then!
技术分享图片
但上一章已经说过,千万不要写出这种垃圾代码,所以如果你的node或者浏览器并不支持ES6,7标准的话,完全可以采用传统多层嵌套回调地狱来实现树状查询,但带来的问题,树大了,嵌套会看起来十分恶心。

使用async和await

在ES7标准中,最为人津津乐道的无非是新增的“async”,“await”语法糖了。

来看下面使用代码这两个语法解决上述问题:

(async function(){
    const sql1 = "select * from student_base_info limit 10";
    let res1 = await query(sql1);
    for(let r of res1){
        console.log(`学号:${r.学号}`);
        let res2 = await query(`select * from student_school_info where 学号=‘${r.学号}‘`)
        for(let r2 of res2)
            console.log(r2.单位);
    }
})()

注意:await的作用就是等待Promise的resolve的出现,而且必须放在async function之中,目前最外层的那个看着多余的async,官方正在解决中。

使用了await就不必使用then来接受异步操作的返回值,而是直接赋值给变量即可。

ES7中的async和await

标签:遇到   分享图片   标准   方式   font   inf   func   base   query   

原文地址:https://www.cnblogs.com/devilyouwei/p/8945226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!