async await yield

Posted 郑叶叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了async await yield相关的知识,希望对你有一定的参考价值。

问题:async 和yield有什么区别?

无奈只能用“书到用时方恨少”来解释这个问题了。其实也是自己从开始编程就接触的是nodejs中的async 以及await ,yield几乎、貌似好像都没使用过,至于它俩的区别,自己也就一知半解了,还希望看到这个问题的大神可以指教一二

零零总总的总结一点:

1.ES6语法:async 与await搭配使用,不能拆开;

2.都是属于异步方案;

3.本质上:是解决异步编程怎么像同步编成那样写的;

4.yield :需要手动控制异步执行过程,调用.next()一步一步手动执行;方法名前加 *  ;

5.async:算是异步执行问题的终极解决办法,在写法上就是用 async代替yield中的 * ,await代替yield,返回值是promise;

6.async是标准,yield比较hack

7.就功能或者某些方面来说,async属于yield的子集;(yeild可以接收数组来并发,也可以接收object来并发);yield后面跟数组的话,自动加Promise.all()来执行;await后面只能接promise,并且返回的也是promise;

8.async/await 相对于Generator:语义上更容易理解;

9.async await不需要generator,自带执行器。

 

以上是关于async await yield的主要内容,如果未能解决你的问题,请参考以下文章

async和await用法

async 与await 解决异步接口返回数据不能赋值的妙用

c# await 不能作用于 async上?

Kotlin 协程(三) async和await

js异步回调Async/Await与Promise区别 新学习使用Async/Await

Async/Await替代Promise的理由