美文网首页
Thunk函数

Thunk函数

作者: 斯里兰卡的小狮子 | 来源:发表于2020-08-06 18:48 被阅读0次

thunk函数实现generator函数的自动执行

const fs = require("fs");

const Thunk = function (fn) {
  return function (...args) {  //这是readFileThunk函数
    return function (callback) {
      return fn.call(this, ...args, callback);  // fs.readFile(...args, callback)
    };
  };
};

const readFileThunk = Thunk(fs.readFile); // 返回里面函数

function run(fn) {
  var gen = fn();
  function next(err, data) {
    /*
        开始执行yeild表达式--->readFileThunk的执行--> 返回最里层callback入参的函数
        result就是{value:function(callback){return fn.call(this, ...args, callback)},done:false}
        */
    var result = gen.next(data);
    if (result.done) return;
    /*
    next作为callback继续执行
    */
    result.value(next); 
  }
  next(); 
}

const g = function* () {
  const s1 = yield readFileThunk("./files/1.json");
  console.log(s1.toString());
  const s2 = yield readFileThunk("./files/2.json");
  console.log(s2.toString());
  const s3 = yield readFileThunk("./files/3.json");
  console.log(s3.toString());
};

run(g);

相关文章

  • ES6 - generator 函数与异步

    Thunk 函数: 生成 fs.readFile 的 Thunk 函数: 基于 Thunk 函数的 Generat...

  • 异步编程(2) Thunk函数

    Thunk函数 Thunk函数就是用来解决JavaScript中的传名调用的一种实现方式Thunk函数根据个人的理...

  • Thunk函数

    thunk函数实现generator函数的自动执行

  • 写一个自己的Thunkify模块

    什么是Thunk函数 本段内容无耻抄袭自阮一峰的《ESMAScript 6 入门》中对Thunk函数的介绍 Thu...

  • Nodejs yield和thunk函数

    调查内存泄漏顺便复习一下yield、thunk和co这几个东东 thunk函数把多参数函数转换成标准单参数函数(回...

  • 阅迹(一)

    3.22 看过 Thunk 函数的含义和用法 Pointfree 编程风格指南 redux-thunk redux...

  • Generator 函数的异步应用

    传统方法 基本概念 Generator 函数 Thunk 函数 co 模块

  • Thunk函数

    Thunk函数 求值策略 传值调用: 先把参数的值算出来,然后传到函数中。 传名调用: 直接把 x+5 传进去 然...

  • 详解generator(三)——处理thunk

    thunk js中的thunk是指一个用于调用另外一个函数的函数,没有任何参数。也可以说,使用一个函数定义封装函数...

  • co是干啥用的

    再说co之前要先搞清楚 Thunk函数和 Generator函数 Generator函数: 简单来说Generat...

网友评论

      本文标题:Thunk函数

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