使用fs.readfile.bind(context,pathArgument)时如何调用fs.readfile中的回调

时间:2015-08-31 00:38:24

标签: javascript node.js asynchronous functional-programming

当使用fs.readfile.bind(context,pathArgument)时,如何调用fs.readfile中的回调。 //可以理解,因为我的任务函数知道回调参数的名称

async.series([function(callback){
//operation done callback()},...],finalCallback(err,result));

BUT //不可理解

async.series([fs.someOperation.bind(null,firstArgument),...],finalCallback(err,esult)) 

我相信我理解部分应用;但是,它看起来像这样。 function(callback){ fs.someOperation(firstArgument, ????)}(asyncCallbackFunc)然后我不知道如何调用第二个参数...... Thx,提前帮我清理一下。

2 个答案:

答案 0 :(得分:0)

所有bind都设置了回调的上下文。它仍然像其他任何一样经常回调。除此之外,它被明确告知this将是什么。在您的情况下,它设置为null

答案 1 :(得分:0)

函数对象上的bind函数允许您设置上下文,即函数体内this的值,并允许您创建部分函数,​​以防您在调用时传递一些参数bind

例如:

function add(a,b) { 
  console.log(this);  
  return a+b; 
}

var newAdd = add.bind("hello world", 10);

newAdd将是一个参数函数,它被添加到10并返回结果。此外,当调用newAdd时,“hello world”将记录在控制台中。

现在,当你的代码显示fs.readFile.bind(null, path)时,它意味着return函数将是一个参数,它是readfile的回调函数,即return函数的形式为function(callback) { ... },这正是传递给async.series

您发布的代码中的主要思想是创建一个仅接受回调的部分函数,​​以便可以将其传递给async.series。null参数不起任何作用,但您需要传递上下文参数调用绑定函数,因此null作为上下文arg传递。