2012-11-05 74 views
1

所以讀完後我發現我需要一個閉包或者使用bind,但是我沒有完全清楚正確的語法和我應該使用的。在回調中添加額外參數

我使用https://github.com/rsms/node-imagemagick中的imagemagick模塊,並且需要將文件名傳遞給resize回調。

語法是:

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。

回答

1

你可以用一個額外的匿名函數這樣做,如果這就是你的意思是:

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

我說你可以使用關閉,在你的回調,你可以做這樣的事情:

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