thunk 函数

function* f() {
        console.log(1);
        for (var i = 0; true; i++) {
            console.log(‘come in‘);
            var reset = yield i;
            console.log(reset);
            if (reset) { i = -1; }
        }
    }

    // 这个时候并不会执行 1
    var g = f();
    /*
      输出1 和 come in,
      只会执行 yield 后面的语句, 并且暂停,
      但是这个时候 reset 并没有赋值,
      最终返回{value: 0, done: false}
    */
    g.next();
    /*
      reset 赋值 333;
      输出 333;
      输出 come in;
      返回{value: 0, done: false}
    */
    g.next(333);
时间: 2024-10-13 05:44:04

thunk 函数的相关文章

async(await)函数和 Generator 函数 区别

async 函数是 Generator 函数的语法糖. async 函数对 Generator 函数的改进体现在: 1. async 内置执行器. Generator 函数的执行必须靠执行器,需要调用 next() 方法,或者用co 模块:而 async 函数自带执行器.也就是说,async 函数的执行与普通函数一模一样,只要一行. 2. 更好的语义. async 和 await 比起星号和 yield,语义更清楚. 3.更广的适用性. co 模块约定,yield 命令后面只能是 Thunk 函

js-ES6学习笔记-Generator函数的异步应用

1.ES6 诞生以前,异步编程的方法,大概有下面四种. 回调函数 事件监听 发布/订阅 Promise 对象 Generator 函数将 JavaScript 异步编程带入了一个全新的阶段. 2.所谓"异步",简单说就是一个任务不是连续完成的,可以理解成该任务被人为分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段. 3.JavaScript 语言对异步编程的实现,就是回调函数.所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候

js-ES6学习笔记-async函数

1.async 函数是 Generator 函数的语法糖.前文有一个 Generator 函数,依次读取两个文件. var fs = require('fs'); var readFile = function (fileName) { return new Promise(function (resolve, reject) { fs.readFile(fileName, function(error, data) { if (error) reject(error); resolve(dat

es6函数写法

1.普通函数的定义,用箭头函数表示,DemoFunction是函数名,括号表示参数,大括号表示函数体的内容. 1 2 3 let DemoFunc = (param) => {     console.log(param) } 2.map函数在es6中的写法,同样也是箭头函数,e表示map出来的元素,key表示当前id 1 2 3 Array.map((e, key) => {     console.log(e, key) }) 3.类内函数的写法. 1 2 3 4 5 class Func

async 函数--学习笔记一

含义: ES2017 标准引入了 async 函数,使得异步操作变得更加方便.async 函数是什么?一句话,它就是 Generator 函数的语法糖. 前文有一个 Generator 函数,依次读取两个文件. var fs = require('fs'); var readFile = function (fileName) { return new Promise(function (resolve, reject) { fs.readFile(fileName, function(erro

ECMAScript 6 学习(二)async函数

 1.什么是async函数 2.用法 2.1基本用法 3.语法 3.1返回promise对象 3.2promise状态的变化 3.3await命令 1.什么是async函数 async函数也是异步编程的解决方案. async函数是对是对generator函数进行了改进. var readFile = function (fileName) { return new Promise(function (resolve, reject) { fs.readFile(fileName, functio

co函数库源码解析

一.co函数是什么 co 函数库是著名程序员 TJ Holowaychuk 于2013年6月发布的一个小工具,用于 Generator 函数的自动执行.短小精悍只有短短200余行,就可以免去手动编写Generator 函数执行器的麻烦 二.co函数怎么用 举个栗子就能清楚的知道如何使用co函数 1 function* gen(){ 2 var f1 = yield func1; 3 var f2 = yield fnuc2; 4 //sth to do 5 }; 手动执行和co函数执行的写法如下

ES6中的async函数

一.概述 async 函数是 Generator 函数的语法糖 使用Generator 函数,依次读取两个文件代码如下 var fs = require('fs'); var readFile = function (fileName) { return new Promise(function (resolve, reject) { fs.readFile(fileName, function(error, data) { if (error) return reject(error); re

Generator函数异步应用

转载请注明出处: Generator函数异步应用 上一篇文章详细的介绍了Generator函数的语法,这篇文章来说一下如何使用Generator函数来实现异步编程. 或许用Generator函数来实现异步会很少见,因为ECMAScript 2016的async函数对Generator函数的流程控制做了一层封装,使得异步方案使用更加方便. 但是呢,我个人认为学习async函数之前,有必要了解一下Generator如何实现异步,这样对于async函数的学习或许能给予一些帮助. 文章目录 知识点简单回