es6中的Promise中有race()和all()方法,可以实现异步并行,但是平常我们会遇到很多异步串行,看看如何用es6的新方法实现异步串行,这里都用setTimeout异步方法演示。

Promise

在Promise中的then中紧接着返回一个Promise即可实现串行。

Generator

可以每次执行完后调用next(),缺点是必须提前知道变量名。

可以和Promise结合,这样就可以在外面调用next()。

async

async实现异步串行具有天然的优势,只要简单的用await就好。

async Generator

异步Generator方式是async的增强版,里面的yield后面跟着一个Promise,同时又可以包含一个await,它的后面也是一个Promise。区别是调用next()从一个yeild跳到下一个yield,但是遇到await会等待,也就是说,异步Generator可以做更复杂的同步异步操作。

注意看上面的for await of是专门用来遍历异步Generator的,当然,还有一种遍历异步Generator的方法:

通过获取Symbol.asyncIterator来逐个遍历。

其他文章

0
我要评论

评论

返回
×

我要评论

回复:

昵称:(昵称不超过20个字)

图片:

提交
还可以输入500个字