翻译Simplifying Asynchronous Coding with ES7 Async Functions

js中Promises的出现照亮了互联网,它帮助开发者逃出callback地狱,并且解决了大部分js编程者无处不在都会遇到的异步代码的困扰。然而Promises并不是完美的,它依旧会有callback,在复杂的情况下仍然很混乱和难以置信的冗余。

随着ES6的出现,不仅可以无需引入任意一个库就可以直接使用语言自带的promise,而且我们还可以使用过generators。generators可以通过一个函数来暂停进程,这意味着把generators包裹在一个通用函数中,我们可以等待一个异步操作结束之后再执行下一行代码。突然,你的异步代码开始看上去像同步一样。

但是这只是第一步。在ES7中,async functions即将被发布了。async functions的思想是这样的,使用异步编程的generators,并且赋予它们独有的简单和富有语义的语法。因此,你不必使用一个库来获取之前提到的那个通用函数,因为这一些都在背后默默做好了。

如果要是跑一下这篇文章里的ES7代码,你需要使用Traceur编译器。

Async Functions vs Generators