JavaScript回调和函数式编程

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.

  • 那太恶心了 (3认同)