美文网首页
generator、async函数

generator、async函数

作者: shanshanfei | 来源:发表于2018-04-12 09:41 被阅读0次

以同步的方式管理异步操作(暂停执行的作用),每调用一次返回一个状态,如果是异步操作,则会等待异步操作完成后,继续后续的执行,避免了回调,代码更清晰简洁,方便维护,可能是比promise还要好用。

redux-saga中的异步操作effects,采用了generator函数自动执行机制,所以我们只需要关注请求的发送以及数据最终返回后的回调即可,其余事情redux-saga以及帮我们做好了。

async函数是generator函数的语法糖,将 * 替换成了 async 、yeild 替换成了await 而已。async函数自带执行器。

=====================
2018.05.03再学习阮一峰ES6:
1、generator函数:ES6提供的异步编程解决方案
generator函数可以理解为一个状态机,内部封装了多个状态。
执行generator函数会返回一个遍历器对象,可以一次遍历函数内部的多个状态。
generator函数有2个特征:function* + yeild。

generator函数与普通函数的区别:
generator函数调用后,并不立即执行,返回的是一个遍历器对象,调用遍历器对象的next方法
才会从函数头部或者上次暂停执行的地方开始执行,直到遇到下一个yeild或者return或者函数结束(yeild暂停执行,next恢复执行)。
yeild语句后的表达式,只有调用next方法时才会被执行。

yeild与return的异同:
都是返回后续紧跟着的表达式的值;
但是yeild可以有多个,return只能有一个;
yeild只能用在generator函数里面。

1、yield表达式本身没有返回值,但是可以通过给next方法传参,作为上一个yield表达式的返回值:可以在函数开始运行后,继续向函数内部注入参数
function* gg(){
    var x = yield 111;
    console.log(x);// 200 第一次执行next即使传值也没用的,第二次执行next传的值才有用
    var y = yield x + 100;
    console.log(y);// 400
    yield y + 100;
}
var g = gg();
g.next();//{value: 111, done: false}
g.next(200);//{value: 300, done: false}
g.next(400);//{value: 500, done: false}
g.next();//{value: undefined, done: true}

generator函数的应用:
1.异步请求的同步化解决方案
2.简化控制流 代码简洁
3.可以用for...of来遍历函数内的值,所以可以作为数据结构
4.可以为任意对象部署iterator遍历接口

promise十道题

相关文章

  • JS中的async/await -- 异步隧道尽头的亮光

    async函数 简单解释async函数就是Generator函数的语法糖。 Generator函数写法 async...

  • 使用function* / yield 实现 async/awa

    1.明确概念async函数就是generator函数的语法糖。async函数,就是将generator函数的*换成...

  • async(异步) 函数

    async 函数是 Generator 函数的语法糖。 Generator 函数,依次读取两个文件 写成async...

  • 2018-05-22

    async 函数 1. 含义 async 函数是 Generator 函数的语法糖。async函数将Generat...

  • async await

    async/await是什么 async是Generator的语法糖基本上async替代Generator函数声明...

  • async

    async async函数是对generator函数的改进内置执行器,generator函数的执行需要执行器更好的...

  • JS Generator 备忘与异步操作

    Generator 函数 异步操作和Async函数

  • promise generator async

    async: async函数是Generator函数的语法糖,是ES7实现的标准,将Generator的星号换成a...

  • async函数

    async函数 async函数的含义 简单来说:async 函数就是 Generator 函数的语法糖下面是两个是...

  • async/await 原理及简单实现

    解决函数回调经历了几个阶段, Promise 对象, Generator 函数到async函数。async函数目...

网友评论

      本文标题:generator、async函数

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