学习
实践
活动
专区
工具
TVP
写文章

Generator函数

Generator 函数返回的遍历其对象,可以依次遍历Generator 函数内部的每一个状态。 Generator 函数是一个普通函数,但是有两个特征。 ES6 提供了yield*表达式,作为解决办法,用来在一个 Generator 函数里面执行另一个Generator 函数。 Generator.prototype.throw() Generator 函数返回的迭代器对象,都有一个throw方法,可以在函数体外抛出错误,然后在 Generator 函数体内捕获。 (…) Generator.prototype.return() Generator 函数返回的迭代器对象,还有一个return方法,可以返回给定的值,并且终结遍历 Generator 函数。 Generator 函数 协程的 Generator 函数实现 Generator 函数是协程在 ES6 的实现,Generator 函数是根据JavaScript单线程的特点实现的。

24130
  • 广告
    关闭

    新年·上云精选

    热卖云产品新年特惠,2核2G轻量应用服务器9元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Generator函数

    概念 Es6提供的解决异步编程的方案之一 Generator函数是一个状态机,内部封装了不同状态的数据 用来生成遍历器对象 可暂停函数(惰性求值) 1.yield:暂停 2.next 启动 每次返回的是 yield后的表达式结果 特点 1.function与函数名之间有一个*号 2.内部用yield表达式定义不同状态 3.generator函数返回的是指针对象 而不会执行函数内部逻辑 4.调用next方法函数内部逻辑开始执行 函数,当调用该函数时,却什么也没有执行 这是因为generator函数返回的是指针对象(参照Iterator) 而不会执行函数内部逻辑 既然返回值是指针对象,那么我们可以直接调用next() function hello word') yield 'hello' } var t = myGenerator() t.next() //hello word Generator ", done: false} 示例 基于Generator的特性我们可以解决异步回调问题 如下先发送请求获取新闻,在根据新闻得到当前新闻的评论 function getNews(url){ $

    9120

    Iterator 、Generator(一)

    爱是天时地利的迷信---《原来你也在这里》 接上篇Iterator 、Generator speak is cheap ~ 调用Generator函数,返回一个遍历器对象,代表Generator函数的内部指针 正常函数只能返回一个值,但是Generator函数可以返回一系列值,因为可以有任意多个yield(generator生成器的意思)。 } var generator = f(); setTimeput(function(){ generator.next(); },2000); 若f是一个普通函数,在给generator赋值时就会执行 但是,它是一个generator函数,只有调用next方法时,f才会执行。 yield只有用在Generator函数里面,用在其他地方都会报错。 Generator函数就是遍历器生成函数,因此可以把Generator赋值给对象的Symbol.iterator属性,从而使得该对象具有Iterator接口。

    22930

    Generator 异步原理

    genetor实现 那么如果使用generator会如何实现实现同样的一个异步操作呢? 这里先给结果,再来分析实现原理。这里记住co,这个co是干嘛的,一会分析并实现一个我们自己的co函数。 co接收一个genetor,所以我们可以认为co就是一个generator的发动机,或者自动执行器。 但是,下一句,立马又遇到了response.json(),同样又会丢出去一个内容,因此,我们这里再处理一下,如下: function run(generator) { const iterator = generator(); //genetor执行会返回一个iterator,然后调用next()才会执行到下一个yield const iteration = iterator.next( 流程如下: run传入一个genetor并运行,获得一个iterator(generator()) 调用next()方法,获取到iteration,iteration的value是yield fetch

    9820

    上手 yeoman generator

    yeoman generator则是yeoman的精髓所在。 从我的理解来看。yeoman就是一个工具外壳,它定制了如何调用generator,给generator提供了运行环境。 yeoman generator则是解耦出来的核心部分,负责完成一个脚手架应该做的事。 线上已经有很多generator,可以满足我们一大波需求。 怎么做 yeoman的强大之处在于它提供了一套非常强大的编写自定义generator的API,而且上手非常容易。只要按照特定的约束,很快就可以定制一套自己的generator。 当然你可以用generator-generator生成符合规范的generator,这样更加快捷。 index.js结构示例 package.json不多说,注意主入口写好就行。 -g generator-imlint-init yo imlint-init 小结 例子比较简单,方法也只说了下generator最常用的三个方法。

    35250

    上手 yeoman generator

    yeoman generator则是yeoman的精髓所在。 从我的理解来看。yeoman就是一个工具外壳,它定制了如何调用generator,给generator提供了运行环境。 yeoman generator则是解耦出来的核心部分,负责完成一个脚手架应该做的事。 线上已经有很多generator,可以满足我们一大波需求。 怎么做 yeoman的强大之处在于它提供了一套非常强大的编写自定义generator的API,而且上手非常容易。只要按照特定的约束,很快就可以定制一套自己的generator。 当然你可以用generator-generator生成符合规范的generator,这样更加快捷。 index.js结构示例 package.json不多说,注意主入口写好就行。 -g generator-imlint-init yo imlint-init 小结 例子比较简单,方法也只说了下generator最常用的三个方法。

    31440

    Generator 函数的语法

    # Generator 函数的语法 # 简介 # 基本概念 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。 本章详细介绍 Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数的异步应用》一章。 封装了多个内部状态。 执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。 返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。 形式上,Generator 函数是一个普通函数,但是有两个特征。 Generator 函数被称为“半协程”(semi-coroutine),意思是只有 Generator 函数的调用者,才能将程序的执行权还给 Generator 函数。

    2620

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 混沌演练平台

      混沌演练平台

      混沌演练平台(CFG)是一款遵循混沌工程实验原理并结合腾讯云内部实践的产品,提供基于真实线上故障的高可用能力演练服务,能够帮助用户的系统提升容错性和可恢复性。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券