美文网首页
es6--generator

es6--generator

作者: 习惯水文的前端苏 | 来源:发表于2022-04-23 14:02 被阅读0次

\bullet 什么是generator

    它是一个部署了Iterator接口和迭代器的函数,执行generator函数会返回一个迭代器对象,该对象允许我们手动控制迭代流程

    迭代器即for...of

\bullet 初识

    形式上,它在function与name之间使用*标识,配合yeild控制迭代器每次的执行位置。可以看到,以yield为分界,将一个函数拆分成了不同的运行阶段,每次执行next,都会对当前的yield进行求值并暂停

\bullet next、throw、return控制迭代流程

    通过next传参,可以去控制或影响函数中的下一次状态,可以看出,next的参数会被当做上一个yield的返回值

    通过return函数可以提前中断迭代流程

    校验上一个迭代状态,并手动抛出异常终止迭代

\bullet for...of自动遍历

    由于generator是部署了迭代协议,且返回了迭代对象,故可以通过for...of自动求值

\bullet 展开generator嵌套

    使用yield*可以将内部嵌套的generator函数展开,大概就像扩展运算符一样

\bullet 使用this缓存值

    由于generator始终返回的是迭代器实例而不是this,故无法向this添加属性,可以通过call或apply方式将this指向修正到迭代器

    在antd-pro的models中,我们一般通过diapatch方式去触发某一个ajax请求后将结果保存到state后在通过connect或者useReducer在组件中获取,是否可以尝试直接在原型上获取?

\bullet 应用

    模拟async-await

相关文章

  • ES6--Generator

  • es6--generator

    什么是generator 它是一个部署了Iterator接口和迭代器的函数,执行generator函数会返回一...

网友评论

      本文标题:es6--generator

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