ECMAScript -23 生成器 Generator

  • 提供更好的异步编程解决方案
function* foo() {
  console.info('tom')
  return 100
}

const result = foo() // Object [Generator] {}
console.info(result.next())

/**
 * 执行结果
 * tom
 * { value: 100, done: true } 🚀生成器函数也实现了Iterator接口
 */
function* foo() {
  console.info('11111')
  yield 100
  console.info('22222')
  yield 200
  console.info('33333')
  yield 300
}
/**
 * 生成器函数自动返回一个生成器对象,调用next才执行函数体, 
 * 遇到yield就暂停执行,同时yield后面的作为返回数据
 */
const generator = foo()
console.info(generator.next()) // >>> { value: 100, done: false }
console.info(generator.next()) // >>> { value: 200, done: false }
console.info(generator.next()) // >>> { value: 300, done: false }
console.info(generator.next()) // >>> { value: undefined, done: true }

// 惰性执行,踢一脚,动一动😭
posted @ 2020-08-18 22:57  荣光无限  阅读(93)  评论(0)    收藏  举报