非同期パッケージのドキュメントでは、each()
メソッドは3つの引数each(coll, iteratee, callback)
を受け取ります。私の質問は第3引数callback
ではなく、第2引数iteratee
の別の "コールバック"関数です。Node.jsのAsyncパッケージの.each()メソッドのコールバック関数
iteratee
は、関数を引数にとり、AsyncFunction()
関数のタイプです。ここでは、このドキュメントで提供されている例を示します。この例では
// assuming openFiles is an array of file names
async.each(openFiles, function(file, callback) {
// Perform operation on file here.
console.log('Processing file ' + file);
if(file.length > 32) {
console.log('This file name is too long');
callback('File name too long');
} else {
// Do work to process file here
console.log('File processed');
callback();
}
}, function(err) {
// if any of the file processing produced an error, err would equal that error
if(err) {
// One of the iterations produced an error.
// All processing will now stop.
console.log('A file failed to process');
} else {
console.log('All files have been processed successfully');
}
});
、第二引数function(file, callback)
はiteratee
関数であるべきです。しかし、私はどこで、そのcallback
引数が定義されているのか分かりません。上記の例ではcallback('File name too long');
とcallback('File name too long');
と呼ばれていますが、正確にはこの機能は何ですか?直感的に、このファンクションは、file
がこの事実を通知する処理を完了したときに呼び出されることがあります。しかし、私はこのcallback
の正確なコードをどこで見つけることができましたか?
「each」の実装の中にあるコードは、その関数をiterateeに渡します。しかし、それを探しに行かないでください - それはかなり複雑なコードです。はい、 'callback'はiterateeが終了したときに結果やエラーが発生したときに呼び出され、' async.each'が何をしても次のステップを起動します。 – Bergi
実際には何も起きていないので、その例は恐ろしいです。 – Bergi