CNode

问个语法问题~这里好奇怪呀~

Ffreew01f发布于12 年前最后回复12 年前7 回复4858 浏览0 收藏
var thunkify = require('thunkify');
var fs = require('fs');

var read = thunkify(fs.readFile);

read('books.json', 'utf8')(function(err, res){
	console.log(res);
});

thunkify无非就是包一层方法,让所有方法的callback统一 但是 为什么调用时候

read(参数)(方法);

这里好奇怪! 这是什么语法? 如何来理解

查看回复

回复 (7)

T
tulayang#1·12 年前

这叫做柯里化, 好好了解了解js吧,ES6函数式痕迹会非常明显

N
nighca#3·12 年前

这是不彻底的柯里化,跟ES6没什么关系。

thunkify返回的read方法,它接受参数fileName, encodeType后再返回一个方法read2,read2接受一个回调函数callback作为参数,并将以 [fileName, encodeType, (包装过的callback)] 作为参数执行先前thunkify时传入的方法fs.readFile。

见此 https://github.com/visionmedia/node-thunkify/blob/master/index.js

逻辑并不复杂。

F
freew01f#4·12 年前
引用 tulayang这叫做柯里化, 好好了解了解js吧,ES6函数式痕迹会非常明显

科利华好好研究下,没怎么正经搞过js,所以不是特别熟悉 最近一段时间的折腾 已经有了一定了解 上一次搞脚本语言还是15年前 天天啃Perl的时候

M
mrFranklin#6·12 年前

请教,这个thunkify有啥应用场景?

F
freew01f#7·12 年前
引用 mrFranklin请教,这个thunkify有啥应用场景?
var res = yield thunkify之后的异步方法(参数);

我是为了这个 像同步方法一样取执行异步方法

参与回复
登录后即可参与回复。登录