当使用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,提前帮我清理一下。
答案 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传递。