この質問は私のprevious questionへの回答と関連しています。 @robertklepは.map()
の代わりにmapLimit()
を使用することをお勧めします。.map()
は大量のデータを扱うことができず、その解決策はすべて問題なく動作するからです。しかし、私は自分のコードを再構築しましたが、今度は.<fn>Limit()
の関数のどちらも最初のループの繰り返しの後には実行されません。私はここに何かを逃していますかasync。 <fn>最初のiteratonループの後の制限停止
var proccesBook = function(file, cb) {
testFile(file, function (epub) {
if (epub) {
getEpuData(file, function (data) {
insertBookInDB(data)
})
}else{
cb(file)
}
})
}
async.mapLimit(full_files_path, 10, proccesBook, function(err){
if(err){
console.log('Corrupted file', err);
} else {
console.log('Processing complete');
};
})
// ---> only runs for the first 10 series data
- ' insertBookinDB'は、コールバックを必要としないのですか?また 'else'ブランチでは、' async'がコールバック規約に従うので、エラーオブジェクトを最初のパラメータとして呼び出して 'cb'を呼び出す必要があります。 'cb(null、file)'。 – cejast
@cejast、ありがとう – efirvida