generator 和异步回调

在我们日常的前端开发中,异步回调是不可避免的操作,会严重影响我们的编程体验和代码的维护性、阅读性,而 promise 和 generator 可以在一定程度上解决这个问题。它们没有那么神奇,只是代码上的一些小花招,现在我们具体来看看 generator 是如何解决异步回调的问题。

一般的异步回调写法

我们先来看看,ajax 请求的一般写法。

上面的代码大致模拟了一个异步请求,一秒之后函数会返回当前请求的 url,如果这个 url 是我的网站则停止请求,否则将继续请求。也许用“请求”这种字眼并不合适,但是在实际开发中我们经常遇到类似的情况,我们得根据上一次的返回结果做下一次的操作。按照传统的调用方式,我们就会产生回调地狱的问题(有没有想到十八层地域这个词?😏)。

generator

我们来看看 generator 如何解决上面的问题,使用同步的方式写异步的代码。直接上代码。

上面的代码,我们先封装了一个 sync 函数,参数为一个生成器函数。在生成器里我们分别调用了两次 wrapAjax 这个方法去做异步操作······

哎呀,文风突转,感觉写不下去了,大家自己在最新的谷歌浏览器里运行代码。就此打住,我先去吃饭了。

参考链接

function *

曾小乱

作者: 曾小乱

喜欢写点有意思的东西

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.