Dud*_*lul 12 javascript asynchronous functional-programming serverside-javascript node.js
"功能编程仅描述了对程序输入执行的操作,而不使用临时变量来存储中间结果."
问题是如何应用函数式编程并使用使用回调的异步模块.在某些情况下,您喜欢使用回调来访问调用异步引用所构成的函数的变量,但已经定义了回调的签名.
例:
function printSum(file,a){
//var fs =....
var c = a+b;
fs.readFile(file,function cb(err,result){
print(a+result);///but wait, I can't access a......
});
}
Run Code Online (Sandbox Code Playgroud)
当然我可以访问一个,但它将违背纯函数式编程范式
Ray*_*nos 10
fs.readFile(file, (function cb(err,result){
print(this.a+result);
}).bind({a: a});
Run Code Online (Sandbox Code Playgroud)
context如果必须,只需在函数中注入变量和范围.
因为你抱怨API
fs.readFile(file, (function cb(a, err,result){
print(a+result);
}).bind(null, a);
Run Code Online (Sandbox Code Playgroud)
这叫做currying.这是更多的FP.