美文网首页
Generator 函数的异步应用

Generator 函数的异步应用

作者: 木中木 | 来源:发表于2017-12-05 09:04 被阅读0次

为什么 Node 约定,回调函数的第一个参数,必须是错误对象err(如果没有错误,该参数就是null)?

原因是执行分成两段,第一段执行完以后,任务所在的上下文环境就已经结束了。在这以后抛出的错误,原来的上下文环境已经无法捕捉,只能当作参数,传入第二段。

Thunk 函数
Thunk 函数是自动执行 Generator 函数的一种方法。

编译器的“传名调用”(相对就是“传值调用”)实现,往往是将参数放到一个临时函数之中,再将这个临时函数传入函数体。这个临时函数就叫做 Thunk 函数。
JavaScript 语言是传值调用,它的 Thunk 函数含义有所不同。在 JavaScript 语言中,Thunk 函数替换的不是表达式,而是多参数函数,将其替换成一个只接受回调函数作为参数的单参数函数。

// 正常版本的readFile(多参数版本)
fs.readFile(fileName, callback);

// Thunk版本的readFile(单参数版本)
var Thunk = function (fileName) {
  return function (callback) {
    return fs.readFile(fileName, callback);
  };
};

var readFileThunk = Thunk(fileName);
readFileThunk(callback);

Thunkify 模块
生产环境的转换器,建议使用 Thunkify 模块。

首先是安装。

$ npm install thunkify

var thunkify = require('thunkify');
var fs = require('fs');

var read = thunkify(fs.readFile);
read('package.json')(function(err, str){
  // ...
});

相关文章

  • ES6 Generator函数的next及应用

    Generator函数可以暂停函数执行,返回任意表达式的值。这样使得Generator有多重应用场景。 异步操作的...

  • Generator 函数的异步应用

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

  • Generator 函数的异步应用

    为什么 Node 约定,回调函数的第一个参数,必须是错误对象err(如果没有错误,该参数就是null)? 原因是执...

  • Generator 函数的异步应用

    一、传统方法 ES6 诞生以前,异步编程的方法大概有下面4种 回调函数 事件监听 发布/订阅 Promise 对象...

  • 【ES6】Generator应用场景

    Generator可以暂停函数执行,返回任意表达式的值。这种特点使得 Generator有多种应用场景。 1、异步...

  • JS Generator 备忘与异步操作

    Generator 函数 异步操作和Async函数

  • co.js函数库

    1. Generator函数 Generator 函数就是一个封装的异步任务。异步操作需要暂停的地方,都用 yie...

  • 03-JavaScript-Generator异步编程

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

  • Generator

    异步编程解决方案 Generator 函数、Promise 、回调函数、事件 Generator 函数有多种理解角...

  • co库的简易实现

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

网友评论

      本文标题:Generator 函数的异步应用

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