1

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

我正在使用https://github.com/rsms/node-imagemagick中的 imagemagick 模块,需要将文件名传递给调整大小回调。

语法是:

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

现在我希望我的回调接受额外的参数,例如文件名。

我希望能够调用另一个函数并拥有文件名以及 3 个回调参数(另请注意,这是在一个循环中,因此文件名来自一个数组 - 不确定这是否重要)

所以我有一个回调函数:

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

我能否解释一下我应该使用哪个(闭包或绑定)和优缺点,如果是闭包,我将如何实际编写回调函数 - 我不清楚如何以这种方式访问​​ err、stdout 和 stderr。

4

2 回答 2

1

如果这就是您的意思,您可以使用额外的匿名函数来做到这一点:

im.resize(options, function(err, stdout, stderr) {
  callback(err, stdout, stderr, filename) // do something with filename
});
于 2012-11-05T20:11:29.087 回答
0

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

var filename = 'myfile.jpg';
im.resize(options, function(err,stdout,stderr) {
    console.log('filename',filename,'err',err);
});
于 2012-11-05T20:14:32.177 回答