Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nodejs ES6中的async和await使用实例

nodejs ES6中的async和await使用实例

作者头像
小贝壳
发布于 2020-03-20 12:58:51
发布于 2020-03-20 12:58:51
1.3K00
代码可运行
举报
文章被收录于专栏:贝塔博客贝塔博客
运行总次数:0
代码可运行

2020-03-19 发表在 编程语言 16

几种写法,async和await 有效的解决了之前Promise多层回调的问题。 让代码根据可读性。

传统写法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    aa().then(res=>{

            bb(res).then(br=>{
                cc(br).then(cr=>{

                    dd(cr).then(dr=>{
                        //...无限嵌套
                    })
                })
            })
    })

这种写法对于后期维护是灾难性的。

async和await写法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
async function aa(a) {
    return a + Math.random()
}


async function bb(b) {
    var c = await aa(b)
    console.log(`c:${c}`)
    return c
}

// bb(100).then(res => {
//     console.log(res)
// });


function cc(c) {
    return new Promise(((resolve, reject) => {
        resolve(100);
    }));
}

async function dd() {
    var d = await cc(100)
    console.log(d)
}

//这里调只能获取到一个Promise
console.log(dd())


//正确的调用方法

dd().then(res => {
    //正确的时候
    console.log(`res:${res}`)
}).catch(err => {
    //错误的时候
    //...
}).finally(() => {
    //不管正确错误都执行
})
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ES6之async与await
· async – await 是 Promise 和 Generator 的语法糖,目的只是为了让我们书写代码时更加流畅,增强代码的可读性。
全栈程序员站长
2021/04/07
3590
async/await实现Promise.all()
Promise.all() 方法接收一个 promise 的 iterable 类型(注:Array,Map,Set 都属于 ES6 的 iterable 类型)的输入,并且只返回一个Promise实例,并且输入的所有 promise 的 resolve 回调的结果是一个数组。
不叫猫先生
2023/11/23
1.7K0
Promise解决回调嵌套问题及终极解决方案async 和 await
目的: promise是书写异步代码的另一种方式, 解决回调函数嵌套的问题 1.如何创建一个 promise 对象
青梅煮码
2023/03/02
2.5K0
async/await剖析
JavaScript是单线程的,为了避免同步阻塞可能会带来的一些负面影响,引入了异步非阻塞机制,而对于异步执行的解决方案从最早的回调函数,到ES6的Promise对象以及Generator函数,每次都有所改进,但是却又美中不足,他们都有额外的复杂性,都需要理解抽象的底层运行机制,直到在ES7中引入了async/await,他可以简化使用多个Promise时的同步行为,在编程的时候甚至都不需要关心这个操作是否为异步操作。
WindRunnerMax
2020/08/27
3520
JavaScript中的async/await
async 是一个修饰符,async 定义的函数会默认的返回一个Promise对象resolve的值,因此对async函数可以直接进行then操作,返回的值即为then方法的传入函数。
刘亦枫
2020/03/19
2.6K0
JavaScript基础——深入学习async/await
大家好,上周我们一起学习了《JavaScript基础——Promise使用指南》, 明白了ES6增加的新特性——Promise让我们能够更加优雅的书写回调函数,清楚了Promise有哪些状态,以及如何编写Promise的相关代码。本篇文章,小编将和大家一起学习异步编程的未来——async/await,它会打破你对上篇文章Promise的认知,竟然异步代码还能这么写! 但是别太得意,你需要深入理解Promise后,才能更好的的驾驭async/await,因为async/await是基于Promise的,没有理解Promise,小编强烈建议各位再看看《JavaScript基础——Promise使用指南》。
前端达人
2018/12/17
2K2
JavaScript基础——深入学习async/await
跨越时空的对白——async&await分析
在ES6中新增了asgnc...await...的异步解决方案,对于这种方案,有多种操作姿势,比如这样
Yerik
2022/05/08
1.3K3
跨越时空的对白——async&await分析
Javascript异步回调细数:promise yield async/await
虽然我对js的鄙视一直都是无以复加,但是奈何前端环境不得不依赖javascript。哪些nodejs的大神们四处布道nodejs统治一切:单线程非阻塞,高IO操作。但是,java也可以做好吧,而且GO做的更干练!假设你的应用程序要做两件事情,分别是A和B。你发起请求A,等待响应,出错。发起请求B,等待响应,出错。Go语言的阻塞模型可以非常容易地处理这些异常,而换到了Node里,要处理异常就要跳到另一个函数里去,事情就会变得复杂。
周陆军博客
2023/05/07
9640
[ JavaScript ] 对于 Promie 和 async/await 的理解
promise 是 es6 新增的异步解决方案。虽然, promise 可以解决回掉地狱的问题,但是,如果出现大量的异步请求或者比较复杂的情况下其实也会出现很多的 then ,稍微对 promise 的微任务注册不是理解的特别清晰就会出错。 所以, es7 的 async/await 就是解决这样的一个问题。
GavinUI
2021/04/08
9460
[ JavaScript ] 对于 Promie 和 async/await 的理解
ES6 async-await函数记录
含义 async 函数是什么?一句话,它就是 Generator 函数的语法糖。 async函数对 Generator 函数的改进,体现在以下四点: 1. 内置执行器 Generator 函数的执行必须靠执行器,所以才有了co模块,而async函数自带执行器。也就是说,async函数的执行,与普通函数一模一样,只要一行。 asyncReadFile(); 上面的代码调用了asyncReadFile函数,然后它就会自动执行,输出最后结果。这完全不像 Generator 函数,需要调用next方法,或者用co模
杭州前端工程师
2018/06/13
8650
【学习笔记】ES6新的语法
ES6 最新2019 (es10) ---- 方便 -> 工程性 需要了解的: 变量 作用域 函数 自带对象 异步处理 Promise async/await 变量 以前 var申明 现在 let 变量 const常量 块级作用域 for() {} {} function () {} 看以下代码: <body> <button>1</button> <button>2</button> <button>3</button> <button>4</button>
无道
2019/11/13
3670
Async/await
JavaScript的异步一直是JavaScript的一个复杂的事,从回调到Promise再到Generator,直到async/await,都是为了解决异步操作带来的麻烦。
wade
2020/04/24
6140
async await 你真的用对了吗?
上述代码是一个典型,实际是从项目某个同学代码中抽象得来的。虽然看起来很工整很稳健,try catch做的很到位,但实际上,他没有把async和await理解透彻,没有理解到async返回的是Promise,无论是async内同步的报错还是异步(延迟)的报错,对上层调用来说,都是一个微任务。
用户1258909
2020/11/24
3K0
async await 你真的用对了吗?
async/await详解
async/await是ES20717引入的,主要是简化Promise调用操作,实现了以异步操作像同步的方式去执行,async外部是异步执行的,同步是await的作用。
不叫猫先生
2023/11/25
3K0
到不了的承诺,内附demo(promise/async/await)
下面这个例子,是因为resolve回调函数的参数是promise实例(下文简称N),状态就转移到了N上,直到N状态改变,timeout的resolve回调函数才执行回调
用户2845596
2021/01/21
5430
ES6之async函数
Async函数是ES2017引入的,这一引入使得异步操作又更加方便了。其实async函数是generator的语法糖。只是把*号变成async,yield变成await。
wade
2020/04/23
3910
ES6之async函数
详解ES6中的async/await
先说一下async的用法,它作为一个关键字放到函数前面,用于表示函数是一个异步函数,因为async就是异步的意思, 异步函数也就意味着该函数的执行不会阻塞后面代码的执行。 写一个async 函数
用户6973020
2020/05/02
3.1K0
如何在小程序中使用async/await
我们使用 CNode Api 练习,先获取首页文章列表,然后在获取第一个文章的详情。
九旬
2020/10/23
4K0
nodejs(三)
必须在 package.json 的根节点中添加 "type": "module" 节点
且陶陶
2023/04/12
4650
nodejs(三)
ES6新增语法(七)——async...await
async的意思是“异步”,顾名思义就是有关异步操作的关键字,async 是 ES7 才有的,与我们之前说的Promise、Generator有很大的关联。
呆呆
2021/09/29
6190
相关推荐
ES6之async与await
更多 >
交个朋友
加入前端学习入门群
前端基础系统教学 经验分享避坑指南
加入前端工作实战群
前端工程化实践 组件库开发经验分享
加入前端趋势交流群
追踪前端新趋势 交流学习心得
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验