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

async await 的 实质 本质

时间:2019-01-13 16:10:17      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:ref   代码   包含   方式   调用   异步   targe   同步   程序   

async await  的 实质 就是 用 “状态机” 来 取代 函数嵌套 。

async await  的 本质 是 语法糖,  和 提高性能 什么的 没什么关系 。

 

为了避免理解歧义, 我把 “状态机” 称为 “控制机” 。

 

为了实现一个 语言级 的 ,  在 任意代码 中 通用的 异步回调 “变成 同步代码” 的 语法糖,  需要 解决 函数嵌套 的 问题,  即 异步调用 包含在 函数嵌套 中的问题 。

为了解决这个问题, async await 通过 编译器 对 代码 进行了 切割 和 重新整理,  再拼凑起来,  还原出 原本的 代码 执行的效果 。

还原,  就是用 “控制机” 来 对 切割成 “步骤” 的 代码 逐步调用,    所以,  原本代码中的 函数嵌套 被  控制机  取代了 。

 

对于 控制机 而言, 在 异步调用 的 地方,  可以选择 同步的方式 等待 IO 线程, 也可以选择 异步的方式 把 剩下的“步骤” 放到 IO 线程 的 回调 里 执行,  技术上都可以 。

 

而 async await 的 性能 相比 普通方法 并没有 提高,  相反还 降低 了 。

可以参考 《后线程时代 的 应用程序 架构》  https://www.cnblogs.com/KSongKing/p/10228842.html

里面有 async await 和 普通方法 的 性能测试 对比 。

 

async await 的 实质 本质

标签:ref   代码   包含   方式   调用   异步   targe   同步   程序   

原文地址:https://www.cnblogs.com/KSongKing/p/10262654.html

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