为callback添加额外的参数

所以在阅读之后,我发现我需要一个闭包或者使用bind,但是我不完全清楚正确的语法和我应该使用的。

我使用https://github.com/rsms/node-imagemagick中的imagemagick模块,并且需要将文件名传递给resizecallback。

语法是:

var filename = 'myfile.jpeg'; im.resize(options, callback(err, stdout, stderr)) 

现在我想我的callback接受额外的参数,如文件名。

我想能够调用另一个函数,并有3个callback参数的文件名(还要注意,这是在一个循环,所以文件名是从一个数组 – 不知道是否重要)

所以我有一个callback函数:

 var callback = function(err, stdout, stderr) { //how do I access filename? } 

我可以得到一个解释,我应该使用(封闭或绑定)和优点/缺点,如果封闭,我将如何实际编写callback函数 – 我不清楚如何访问err,stdout和stderr的方式。

如果这是你的意思,你可以用一个额外的匿名函数来做:

 im.resize(options, function(err, stdout, stderr) { callback(err, stdout, stderr, filename) // do something with filename }); 

我会说你可以使用闭包,在你的callback中你可以做这样的事情:

 var filename = 'myfile.jpg'; im.resize(options, function(err,stdout,stderr) { console.log('filename',filename,'err',err); });