问个语法问题~这里好奇怪呀~
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之后的异步方法(参数);
我是为了这个 像同步方法一样取执行异步方法