rowsArr(100レコードと言う)を非同期で処理しようとしていますが、データベース接続を避けるためにデータベースから国リストを一度だけ読み込みたいとします。私は下のコード例を試していますが、データベース接続を100回開いています。Nodejs async.each最初のループを待つ
var countryList = null;
async.each(rowsArr, function(row, callback) {
if(countryList == null)
{
console.log("open database here to get country list and then assign to below variable");
countryList = countriesFromDatabase;
callback(countryList);
}
else
{
callback(countryList);
}
}, function(err){
console.log("all rows are processed");
});
それは、async.eachSeriesで正常に動作しているが、私は非同期にそれをしたいです。なにか提案を?
このアプローチは良いですが、上記の関数はすでに別のループの中にあります。 100レコードは1ループで処理され、数百万のレコードがあります。 –
'countriesFromDatabase'を取得するまでは' row'を処理できないと仮定していますので、最初の繰り返しで 'countriesFromDatabase'を取得した場合、他の行には' countriesFromDatabase'(非同期)はありません 機能を少し変更してください – JagsSparrow
これはほぼ確実に投稿された質問に対する正解です。私はこの答えがなぜ機能しないのかを反映するために質問を編集するか、それを受け入れます。 – Ironcache