美文网首页
Generator生成器函数

Generator生成器函数

作者: 湘兰沅芷 | 来源:发表于2021-11-07 20:53 被阅读0次
// 生成器函数
function * foo () {
  console.log('start')
  try {
    const res = yield 'foo'
    console.log(res)
  } catch (e) {
    console.log(e)
  }
}
const generator = foo()
const result = generator.next()
console.log(result)

generator.throw(new Error('Generator error'))

管理异步流程
递归

function * main () {
  const users = yield ajax('/api/users.json')
  console.log(users)
  const posts = yield ajax('/api/posts.json')
  console.log(posts)
}

const g = main()
const result = g.next()
result.value.then(data => {
  const result2 = g.next(data)
  if (result2.done) return
  result2.value.then(data => {
    const result3 = g.next(data)
    if (result3.done) {
      result3.value.then(data => {
        const result4 = g.next(data)
      })
    }
  })
})
function * main () {
  try {
    const users = yield ajax('/api/users.json')
    console.log(users)
    const posts = yield ajax('/api/posts.json')
    console.log(posts)
  } catch(e) {
    console.log(e)
  }
}
const g = main()

function handleResult (result) {
  if (result.done) return
  result.value.then(data => {
    handleResult(g.next(data))
  }, error => {
    g.throw(error)
  })
}

handleResult(g.next())

function co (generator) {
const g = generator()
function handleResult (result) {
if (result.done) return
result.value.then(data => {
handleResult(g.next(data))
}, error => {
g.throw(error)
})
}
handleResult(g.next())
}
co(main)

执行器函数,线上成熟库地址 https://github.com/tj/co

Async/Await语法糖作用一致

相关文章

  • Promise/generator/async与await

    promise generator 函数 (生成器函数); 普通函数function show(){} 生成器函数...

  • Generator异步方案、AsyncAwait语法糖

    生成器函数(Generator) generator是一个函数,有两个特征:generator由function*...

  • Generator

    Generator 概念: Generator 函数返回的遍历器对象 基本用法 // 定义生成器函数 ...

  • 8-1、generator yield

    generator 生成器generator 函数 中间可以暂停(普通函数一路走到黑)*fun 加 *next()...

  • Generator

    生成器函数(Generator Function) 生成器函数不能直接作为函数来使用 执行生成器函数会返回一个生成...

  • Python yield的使用

    带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? ...

  • async await 的实现原理

    generator + yield + promise 利用generator遍历器生成器函数的分段执行 ,只有在...

  • python中yield的使用

    带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? ...

  • Generator函数实现斐波那契数列

    ES6 中 generator生成器函数 特点: 调用generator函数返回一个迭代器(iterator)对象...

  • ES6 异步进阶第二步:Generator 函数

    一、什么是生成器 Generator? 生成器对象是由一个 Generator 函数返回的,并且她符合 可迭代协议...

网友评论

      本文标题:Generator生成器函数

      本文链接:https://www.haomeiwen.com/subject/myuezltx.html