问个语法问题~这里好奇怪呀~
发布于 10 年前 作者 freew01f 3905 次浏览 最后一次编辑是 8 年前
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 回复

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

哈哈,我喜欢说 咖喱化

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

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

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

逻辑并不复杂。

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

感谢的说,其实thunkify的过程还算了解 但是 就是语法狠奇特

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

var res = yield thunkify之后的异步方法(参数);

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

回到顶部