学习
实践
活动
工具
TVP
写文章
原创

async 函数

async 函数

含义

async 函数是什么?一句话,它就是 Generator 函数的语法糖

一比较就会发现,async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已

Generator 函数的执行必须靠执行器,所以才有了co模块,而async函数自带执行器

async和await,比起星号和yield,语义更清楚了

co模块约定,yield命令后面只能是 Thunk 函数或 Promise 对象,而async函数的await命令后面,可以是 Promise 对象和原始类型的值

async函数的返回值是 Promise 对象,这比 Generator 函数的返回值是 Iterator 对象方便多了

基本用法

async函数返回一个 Promise 对象,可以使用then方法添加回调函数

由于async函数返回的是 Promise 对象,可以作为await命令的参数

语法

async函数的语法规则总体上比较简单,难点是错误处理机制。

async函数返回一个 Promise 对象。

async函数内部return语句返回的值,会成为then方法回调函数的参数

async函数返回的 Promise 对象,必须等到内部所有await命令后面的 Promise 对象执行完,才会发生状态改变,除非遇到return语句或者抛出错误

正常情况下,await命令后面是一个 Promise 对象。如果不是,会被转成一个立即resolve的 Promise 对象

如果await后面的异步操作出错,那么等同于async函数返回的 Promise 对象被reject

如果有多个await命令,可以统一放在try...catch结构中

async 函数的实现原理

async 函数的实现原理,就是将 Generator 函数和自动执行器,包装在一个函数里

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

登录 后参与评论
0 条评论

相关文章

  • async函数

    Generator函数的执行必须靠执行器,所以才有co模块,而async函数自带执行器。

    用户3258338
  • 异步函数async和await

    前面我们介绍的是promise对象,这里我们介绍一下async...await异步函数,创建函数时候使用async关键词表示这是一个异步函数,await必须和a...

    十月梦想
  • nodejs记录1——async函数

    其实手动配置babel环境并不难,记录下步骤: 1、首先npm init创建一个nodejs项目 2、全局安装babel-cli处理工具:npm i babel...

    用户1141560
  • 如何更好的编写async函数

    贾顺名
  • ES6之async函数

    Async函数是ES2017引入的,这一引入使得异步操作又更加方便了。其实async函数是generator的语法糖。只是把*号变成async,yield变成a...

    wade
  • async 函数的含义和用法

    本文是《深入掌握 ECMAScript 6 异步编程》系列文章的最后一篇。 Generator函数的含义与用法 Thunk函数的含义与用法 co函数库的含义...

    ruanyf
  • 如何更好的编写async函数

    Promise是使用async/await的基础,所以你一定要先了解Promise是做什么的 Promise是帮助解决回调地狱的一个好东西,能够让异步流程变得更...

    贾顺名
  • 转:用 Async 函数简化异步代码

    Promise 在 JavaScript 上发布之初就在互联网上流行了起来 — 它们帮开发人员摆脱了回调地狱,解决了在很多地方困扰 JavaScript 开发者...

    用户7293182
  • await 只在 async 函数中工作

    关于 promise 的一种更优雅的写法 async/await 中,await 只会出现在 async 函数中,我们使用 async/await 时,几乎不需...

    前端开发博客
  • 「译」更快的 async 函数和 promises

    JavaScript 的异步过程一直被认为是不够快的,更糟糕的是,在 NodeJS 等实时性要求高的场景下调试堪比噩梦。不过,这一切正在改变,这篇文章会详细解释...

    coder_koala
  • ES6 async-await函数记录

    杭州前端工程师
  • 异步函数async await在wpf都做了什么?

    首先我们知道async await 异步函数本质是状态机,我们通过反编译工具dnspy,看看反编译的两段代码是否有不同之处:

    ryzenWzd
  • @Async

    Spring应用默认的线程池,指在@Async注解在使用时,不指定线程池的名称。查看源码,@Async的默认线程池为SimpleAsyncTaskExecuto...

    玖柒的小窝
  • ES2017 异步函数的最佳实践(`async` /`await`)

    简单来说,async函数是 promise 的 "语法糖"。它们允许我们使用更熟悉的语法来模拟同步执行,从而代替 promise 链式写法。

    秋风的笔记

作者介绍

精选专题

活动推荐

扫码关注腾讯云开发者

领取腾讯云代金券