视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
JS异步实现Generator的方法
2020-11-27 20:12:10 责编:小采
文档


一、Symbol数据类型

ES6中新增加了Symbol数据类型。

原生具有[Symbol.iterator]属性的数据类型:数组、类数组、map、set、

具有[Symbol.iterator]属性的对象,直接调用就可以生成一个Iterator对象

二、Iterator对象:是一个指针对象,遍历器对象

方法:next():返回的格式为{value: ,done: }

使用for..of遍历: 每次遍历得到的是value值。

三、Geneteror

 function* G(){
 yield 200;
 yield 300;
 return 400;
 }
 var g=G();

1.Generator不是一个函数,定义generator时,使用function*,使用yield来返回结果。

2.调用Generator之后,它内部的代码不会立即执行,而是处于一个暂停的状态。并生成一个generator对象。

3.遇到yield时,会执行yeild后面的表达式,并返回执行之后的值,然后再次进入暂停状态,此时done: false

Generator返回的也是一个iterator对象,因此可以使用next方法、for..of

1.使用next方法时,next中的参数会传递给已经执行的yield前面的值。

2.yield*可以在一个Generator中引用另外一个Generator。

四、generator实现异步操作

1.需要thunk函数,只有一个参数,即回调函数

2.通常使用co库,对异步操作进行包装,方便简洁。

3.yield后面必须是thunk函数。

4.generator依然依靠callback

五、async-await:是Generator的语法糖

与Generator相比:

1.将function* 替代为 async function

2.将yield替代为await

3. await后面是promise对象。跟其他类型的数据也OK,但是会直接同步执行,而不是异步。

下载本文
显示全文
专题