前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >async 函数

async 函数

原创
作者头像
李才哥
修改2021-02-24 17:55:46
6540
修改2021-02-24 17:55:46
举报
文章被收录于专栏:李才哥

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 删除。

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 含义
    • 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 函数和自动执行器,包装在一个函数里
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档