美文网首页
ES5 generator & yield 认识生成器函数

ES5 generator & yield 认识生成器函数

作者: 崩鲨卡拉卡 | 来源:发表于2019-02-21 15:01 被阅读0次
OK

generator 生成器函数(yield:放弃、退让、退位的意思笔记参考

  • 普通的函数 执行到底
  • generator可以拆解函数,中间可以停下,到 yield处,交出执行权
  • 需要使用next()方法启动执行,遇到 yield 停下,踹一脚走一步
  • generator 函数前面加上 * ,背后生成多个小函数,实现走走停停
function show() {
    console.log('a')
    console.log('b')
}
show() // 普通函数

function *show2() {
    console.log('1')
    yield
    console.log('2')
}
let genObj = show2()
genObj.next() // 1
genObj.next() // 2
genObj.next() // 最后了,没有结果

yield 是个啥?

  • yield可以传参 ,可以 返回值
  • 第一个 next() 传参无效,只用来启动,从第二个才可以

传参:

function *show(){
           alert("111")
           let wt=yield;
           alert("222"+wt)
       }
       let gen=show();
       gen.next(1);  传参无效,只是负责 启动
       gen.next("传入的参数");

返回:

function *show(){
           alert("111")
           let wt=yield;
           alert("222"+wt)
       }
       let gen=show();
       gen.next(1);  传参无效,只是负责 启动
       gen.next("传入的参数");

Promise 和 generator 对比实例:

  • Promise 适合一次读一组

  • generator 适合逻辑性的

  • generator 可以控制逻辑,Promise 不带逻辑控制,

// 带逻辑-generator
runner(function * () {
    let userData = yield $.ajax({url: 'getUserData'})

    if (userData.type == 'VIP') {
        let items = yield $.ajax({url: 'getVIPItems'})
    } else {
        let items = yield $.ajax({url: 'getItems'})
    }
})
// yield 实例,用同步方式写异步
server.use(function * () {
    let data = yield db.query(`select * from user_table`)
    this.body = data
})

相关文章

  • Python yield的使用

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

  • async await 的实现原理

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

  • python中yield的使用

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

  • python之yield和yield from

    yield,使用 yield 的函数被称为生成器(generator),跟普通函数不同的是,生成器是一个返回迭代器...

  • yield(对比return)

    带有 yield 的函数在 Python 中被称之为 generator(生成器),return和yield的形式...

  • ES5 generator & yield 认识生成器函数

    generator 生成器函数(yield:放弃、退让、退位的意思)笔记参考 普通的函数 执行到底 generat...

  • 5. Python3 中的生成器的高级方法 及总结

    回顾: 生成器就是含有yield操作的函数,生成器函数的返回值就是一个迭代器(generator object) ...

  • 生成器

    生成器 在python中,使用了yield的函数被称为生成器(generator)。生成器是一个返回迭代器的函数,...

  • Python yield 的使用

    yield 的函数在 Python 中被称之为 generator(生成器)。替代return函数的需要循环返回值...

  • Python yield 的使用

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

网友评论

      本文标题:ES5 generator & yield 认识生成器函数

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