JavaScript异步编程:Generator与Async
从 Promise 开始,JavaScript就在引入新功能,来帮助更简单的方法来处理异步编程,帮助我们远离回调地狱。 Promise 是下边要讲的 Generator / yield 与 async / await 的基础,希望你已经提前了解了它。 在大概 ES6 的时代,推出了 Generator / yield 两个关键字,使用 Generator 可以很方便的帮助我们建立一个处理 Promise 的解释器。 然后,在 ES7 左右,我们又得到了 async / await 这样的语法,可以让我们以接近编写同步代码的方式来编写异步代码(无需使用 .then() 或者回调函数)。 两者都能够帮助我们很方便的进行异步编程,但同样,这两者之间也是有不少区别的。 Generator Generator 是一个函数,可以在函数内部通过 yield 返回一个值( 此时, Generator 函数的执行会暂定,直到下次触发 .next() ) 创建一个 Generator 函数的方法是在 function 关键字后添加 * 标识。 在调用一个 Generator 函数后,并不会立即执行其中的代码,函数会返回一个 Generator 对象,通过调用对象的 next 函数,可以获得 yield / return 的返回值。 无论是触发了 yield 还是 return , next()