首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Generator函数

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

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

Generator 函数的语法

# Generator 函数的语法 # 简介 # 基本概念 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。...执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。...返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。 形式上,Generator 函数是一个普通函数,但是有两个特征。...Generator 函数体外抛出的错误,可以在函数体内捕获;反过来,Generator 函数体内抛出的错误,也可以被函数体外的catch捕获。...Generator 函数被称为“半协程”(semi-coroutine),意思是只有 Generator 函数的调用者,才能将程序的执行权还给 Generator 函数

71720

Generator 函数的语法

Generator 函数的语法.png Generator 函数的语法 简介 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同 语法上,首先可以把它理解成,Generator...函数是一个状态机,封装了多个内部状态 执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数 一是,function关键字与函数名之间有一个星号...二是,函数体内部使用yield表达式,定义不同的内部状态 总结一下,调用 Generator 函数,返回一个遍历器对象,代表 Generator 函数的内部指针。...作为对象属性的 Generator 函数 属性前面有一个星号,表示这个属性是一个 Generator 函数 Generator 函数的this Generator 函数也不能跟new命令一起用,会报错...Generator 函数被称为“半协程”(semi-coroutine),意思是只有 Generator 函数的调用者,才能将程序的执行权还给 Generator 函数 Generator 执行产生的上下文环境

38210

es6 --- Generator 函数

将这段代码简单分析一下吧 定义Generator时,需要使用function*,其他的和定义函数一样。...如果搞不明白细节,至少要明白以下几个要点: Generator不是函数,不是函数,不是函数 Hello()不会立即出发执行,而是一上来就暂停 每次h.next()都会打破暂停状态去执行,直到遇到下一个...中的this 对于以下这种写法,大家可能会和构造函数创建对象的写法产生混淆,这里一定要注意 —— Generator 不是函数,更不是构造函数 function* G() {} const g...只有构造函数才会这么用,构造函数返回的是this,而Generator返回的是一个Iterator对象。完全是两码事,千万不要搞混了。...下一节我们又给出一个新概念————Thunk函数 第四部分,Thunk 函数 要想让Generator和异步操作产生联系,就必须过thunk函数这一关。

63620

Generator 函数的异步应用

# 协程的 Generator 函数实现 Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行)。...# Generator 函数的数据交换和错误处理 Generator 函数可以暂停执行和恢复执行,这是它能封装异步任务的根本原因。...回答是以前确实没什么用,但是 ES6 有了 Generator 函数,Thunk 函数现在可以用于 Generator 函数的自动流程管理。 Generator 函数可以自动执行。...这种方法就是 Thunk 函数,因为它可以在回调函数里,将执行权交还给 Generator 函数。为了便于理解,我们先看如何手动执行上面这个 Generator 函数。...有了这个执行器,执行 Generator 函数方便多了。不管内部有多少个异步操作,直接把 Generator 函数传入run函数即可。

1.4K20

Generator 函数的异步应用

Generator 函数的异步应用.png Generator 函数的异步应用 传统方法 回调函数 事件监听 发布/订阅 Promise 对象 基本概念 所谓"异步",简单说就是一个任务不是连续完成的...Promise 对象是一种新的写法,允许将回调函数的嵌套,改成链式调用 Generator 函数 第一步,协程A开始执行。...Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行) Generator 函数可以暂停执行和恢复执行,这是它能封装异步任务的根本原因 Thunk 函数 Thunk...函数是自动执行 Generator 函数的一种方法 Thunk 函数的定义,它是“传名调用”的一种实现策略,用来替换某个表达式 生产环境的转换器,建议使用 Thunkify 模块 co 模块 co 模块可以让你不用编写...Generator 函数的执行器 (1)回调函数

94740

ES6中的迭代器、Generator函数以及Generator函数的异步操作

(3)、在Generator函数的 yield * 中使用 稍后会详细的介绍 Generator 函数,一个Generator 函数返回的是一个迭代器,我们可以调用该迭代器的 next 方法来执行每一个...二、Generator函数及异步编程 理解完迭代器,接下来来看一下Generator函数。如果做过RN开发的话,如果使用过 redux - saga的话,应该对Generator函数不陌生。...Generator函数是ES6提供的异步编程的解决方案,解析了我们先看一下Generator函数基本使用方式,再看一下如何使用Generator函数进行异步编程。...1、Generator函数的定义和使用 下方定义了一个 Generator函数Generator函数的定义与普通函数的定义差不多,只不过是function关键字后边跟了一个*号。...然后定义了一个Generator函数,在该函数中通过yield来调用每个函数,下方的Generator函数比较简单,在此就不做过多赘述了。 ?

96540

ES6-标准入门·Generator 函数

Generator 函数 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。此前,只在 dva(内部封装 redux-saga)里使用过,此次深入了解之。...Generator 函数 简介 基本概念 Generator 函数可以理解成一个状态机,封装了多个内部状态。...执行 Generator 函数会返回一个遍历器对象,该遍历器对象可以依次遍历 Generator 函数内部的每一个状态。换言之,Generator 函数除了是状态机,还是一个遍历器对象生成函数。...Generator 函数的调用方法与普通函数一样。不同的是,调用 Generator 函数后,该函数并不执行,返回的也不是函数运行结果,而是一个指向内部状态的指针对象,也就是遍历器对象。...Generator 函数总是返回一个遍历器,这个遍历器是 Generator 函数的实例,它继承了 Generator 函数的 prototype 对象上的方法。

34040

ES6新增语法(六)——Generator函数详解

上篇文章《ES6新增语法(五)——Promise详解》我们介绍Promise,Promise一旦执行就无法暂停和取消,所以ES6引入了Generator函数,可以通过yield关键字,把函数的执行流程挂起...什么是Generator函数Generator主要是异步编程,用来封装异步任务,是一个异步任务的容器,可以让函数按照我们指定的时候执行或者暂停。...,执行到第一个yield处停止 p.next() //从上一个yeild开始执行,到下一个yield处为止 Generator与普通函数区别 1> 定义函数的时候比普通函数多了一个 * 号。...3> 普通函数是无法暂停的,但Generator函数是分段执行的,yield是暂停标记,而next()可以恢复执行。...Generator函数优点 Generator函数是ES6提供的一种异步编程解决方案,解决了两大问题: 回调地狱 异步流控

32710

一文带你搞懂JavaScript的Generator函数

一、概念 常规函数只会返回一个单一值(或者不返回任何值)。 而 Generator 可以按需一个接一个地返回(“yield”)多个值。...二、Generator 函数 要创建一个 generator,需要一个特殊的语法结构:function*,即所谓的 “generator function”。...Generator 函数与常规函数的行为不同。在此类函数被调用时,它不会运行其代码。而是返回一个被称为 “generator object” 的特殊对象,来管理执行流程。...{value: 1, done: false} 截至目前,只获得了第一个值,现在函数执行处在第二行: 让再次调用 generator.next()。...false} 如果第三次调用 generator.next(),代码将会执行到 return 语句,此时就完成这个函数的执行: let three = generator.next(); alert(

30850

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券