美文网首页
es6 generator函数

es6 generator函数

作者: 三十六计至做笔记 | 来源:发表于2019-05-05 09:14 被阅读0次

协程:多个线程互相协作,完成异步任务。

functionasnycJob(){ // ...其他代码varf=yieldreadFile(fileA); // ...其他代码}

Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行)。

function*gen(x){vary=yield x+2;returny;}---------它不同于普通函数,是可以暂停执行的,所以函数名之前要加星号,以示区别。

执行方法:

varg=gen(1);g.next() // { value: 3, done: false }g.next()// { value: undefined, done: true }

Generator 函数不同于普通函数的另一个地方,即执行它不会返回结果,返回的是指针对象。调用指针 g 的 next 方法,会移动内部指针

每次调用 next 方法,会返回一个对象,表示当前阶段的信息( value 属性和 done 属性)。value 属性是 yield 语句后面表达式的值,表示当前阶段的值;done 属性是一个布尔值,表示 Generator 函数是否执行完毕,即是否还有下一个阶段。

function*gen(x){vary=yield x+2;returny;}varg=gen(1);g.next() // { value: 3, done: false }g.next(2) // { value: 2, done: true }

第一个 next 方法的 value 属性,返回表达式 x + 2 的值(3)。第二个 next 方法带有参数2,这个参数可以传入 Generator 函数,作为上个阶段异步任务的返回结果,被函数体内的变量 y 接收。因此,这一步的 value 属性,返回的就是2(变量 y 的值)。

function*gen(x){try{vary=yield x+2;}catch(e){console.log(e);}returny;}varg=gen(1);g.next();g.throw('出错了');// 出错了

Generator 函数体外,使用指针对象的 throw 方法抛出的错误,可以被函数体内的 try ... catch 代码块捕获。这意味着,出错的代码与处理错误的代码,实现了时间和空间上的分离,这对于异步编程无疑是很重要的。

generator 用法

varfetch=require('node-fetch');function*gen(){varurl='https://api.github.com/users/github';varresult=yieldfetch(url);console.log(result.bio);}

varg=gen();varresult=g.next();result.value.then(function(data){returndata.json();}).then(function(data){g.next(data);});

首先执行 Generator 函数,获取遍历器对象,然后使用 next 方法(第二行),执行异步任务的第一阶段。由于 Fetch 模块返回的是一个 Promise 对象,因此要用 then 方法调用下一个next 方法。

相关文章

  • 03-JavaScript-Generator异步编程

    Generator 概念 Generator 函数是 ES6 提供的一种异步编程解决方案 Generator 函数...

  • co库的简易实现

    generator Generator 函数是 ES6 提供的一种异步编程解决方案。 执行generator函数会...

  • JavaScript异步处理——Generator及async函

    Generator Generator 函数是 ES6 提供的一种异步编程解决方案。Generator函数在fun...

  • Generator函数介绍

    什么事Generator函数 Generator函数是ES6提供的一种异步编程解决方案, 可以把Generator...

  • 20.ES6中Generator生成器

    Generator是ES6的生成器1、Generator 函数是 ES6 提供的一种异步编程解决方案,在函数中可以...

  • Generator 函数

    Generator Generator 函数是 es6 中的新的异步编程解决方案,本节仅讨论 Generator ...

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

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

  • Generator函数

    Generator 函数是 ES6 提供的一种异步编程解决方案。调用 Generator 函数后,该函数并不执行,...

  • 关于es6新属性yield

    关于es6新属性yield yield是Generator函数中中断函数返回的一个属性。Generator函数即一...

  • redux-saga学习笔记

    1.Generator函数 Generator函数时ES6提供的一种异步编程解决方案,函数调用后,函数并不执行,返...

网友评论

      本文标题:es6 generator函数

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