美文网首页
异步编程(2) Thunk函数

异步编程(2) Thunk函数

作者: LElysion | 来源:发表于2017-03-11 02:49 被阅读0次

Thunk函数

Thunk函数就是用来解决JavaScript中的传名调用的一种实现方式
Thunk函数根据个人的理解应该就是柯里化,简单来说,就是一个单参数函数,只接受回调函数作为参数,这个单参数版本便是Thunk函数

fs.readFile(fileName, callback)

var Thunk = function(fileName){
  return function(callback){
    return fs.readFile(fileName, callback)
  }
}

var readFileThunk = Thunk(fileName)
readFileThunk(callback)

Generator函数流程管理

不过在ES6前没有太大用处,但是在Generator函数出来后,Thunk函数就可以排上用场,用于Generator函数的自动流程管理
Generator函数可以自动执行的,不过不适合异步操作

function* gen() {
  // ...
}

var g = gen();
var res = g.next();

while(!res.done){
  console.log(res.value);
  res = g.next();
}

所以可以通过Thunk函数的自动流程管理,用于自动控制Generator函数的流程,接收和交换程序的执行权(回调函数和Promise对象都可以做到)

function run(fn) {
  var gen = fn();

  function next(err, data) {
    var result = gen.next(data);/*将指针移动到Generator函数的下一步*/
    if (result.done) return;/*判断是否结束*/
    result.value(next);/*递归,把next放进.value中*/
  }

  next();
}

var g = function* (){
  var f1 = yield readFile('fileA');
  var f2 = yield readFile('fileB');
  // ...
  var fn = yield readFile('fileN');
};

run(g);

参考: http://es6.ruanyifeng.com/#docs/generator-async

相关文章

  • 异步编程(2) Thunk函数

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

  • 阅迹(一)

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

  • part1整理

    函数式编程:JavaScript函数式编程指南 异步编程:异步编程 Promise源码 JavaScript基础知...

  • ES6学习--异步编程--Generator

    异步编程 : (异步编程的语法目的就是让异步编程更像同步编程) 回调函数利用回调函数实现异步编程本身没有问题, 问...

  • ES6 - generator 函数与异步

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

  • 异步_ promise

    阮一峰 js的4种异步编程方法其他的一些异步编程方法 js 异步编程方法 一,回调函数 假定有两个函数f1和f2...

  • redux 异步action

    redux 异步action yarn add redux-thunk 参考 Redux Thunk api请求demo

  • redux-thunk - redux的中间件

    redux-thunk是用来做异步的 他允许你的action可以返回函数, 带有dispatch和getState...

  • [redux-thunk]异步调用报错问题

    在异步调用时提示错误一直访问不成功: 实际已导入thunk模块: 原因:action函数必须返回一个函数!!

  • Redux-saga 中间件

    Redux-saga和thunk一样,可以进行异步代码的拆分。不同的是redux thunk是将异步代码放入act...

网友评论

      本文标题:异步编程(2) Thunk函数

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