JavaScript 口试系列:怎样明确 ES6 中 Generator ?常用利用场景有哪些?

源码 2024-9-28 09:49:05 68 0 来自 中国
1.png 一、先容

Generator 函数是 ES6 提供的一种异步编程办理方案,语法运动与传统函数完全差异
回顾下上文提到的办理异步的本领:

  • 回调函数
  • promise
那么,上文我们提到 promsie 已经是一种比力盛行的办理异步方案,那么为什么还出现 Generator?以致 async/await 呢?
该标题我们留在反面再进行分析,下面先熟悉下 Generator
Generator函数

实验 Generator 函数会返回一个遍历器对象,可以依次遍历 Generator 函数内部的每一个状态
情势上,Generator 函数是一个寻常函数,但是有两个特性:

  • function 关键字与函数名之间有一个星号
  • 函数体内部利用 yield 表达式,界说差异的内部状态
function* helloWorldGenerator() {  yield 'hello';  yield 'world';  return 'ending';}二、利用

Generator 函数会返回一个遍历器对象,即具有 Symbol.iterator 属性,而且返回给本身
function* gen(){  // some code}var g = gen();g[Symbol.iterator]() === g// true通过 yield 关键字可以停息 generator 函数返回的遍历器对象的状态
function* helloWorldGenerator() {  yield 'hello';  yield 'world';  return 'ending';}var hw = helloWorldGenerator();上述存在三个状态:hello、world、return
通过 next 方法才会遍历到下一个内部状态,其运行逻辑如下:
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 21:15, Processed in 0.154672 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表