最近看到一张关于async的图(其实是PPT[1]中的一张),挺有意思。

图片描述

大概解释一下。async编程有4个层次(level)。

最底层的就是现在的Javascript(包括ES6)。就是async + callback模式。所以有callback hell。即使Promise也没有解决这个问题。因为一段逻辑其实是被分散到多个地方表述的,导致代码的可读性很差。

发展到最近就有了async + await模式。抛弃了callback。使得编写async程序看起来就像普通的程序一样。同时也支持exception的处理。Python 3.5和ES7就到了这个阶段。这在我看来已经很先进了。因为async await的代码除了有些关键字标签之外,已经和普通代码看不出什么区别。所有程序逻辑都集中在一处。当然,代码是这样,但是在我们的脑子里面还是要理解这个是异步的,不会阻塞等等。

PPT中介绍的是第4个层次: monad。不明觉厉。有机会了解下。

  1. 杨博,More than async, QCon全球软件开发大会2016


仗键去国
1.5k 声望10 粉丝

码农; 顾问; 架构师; kubernetes, Openstack and docker 贡献者