ノード js の for ループ内の非同期コールバックにより、次の問題が発生します。
for(var index in workload.elements) {
var arr = [];
var resourceIdentifiers = {};
var elementinfo = {};
var metadataModified = {};
elementinfo = workload.elements[index];
arr[index] = workload.elements[index].uri;
if (workload.elements[index].parameters.imageUri) {
arr.push(workload.elements[index].parameters.imageUri);
}
resourceIdentifiers = arr.join(',');
console.log('uri' + resourceIdentifiers);
mysql.elementlevelpricing(resourceIdentifiers, function(result){
elementlevelpricingSummary = result;
metadataModified = workload.elements[index].metadata;
metadataModified.newitem = elementlevelpricingSummary;
delete elementinfo.metadata;
elementinfo.metadata = metadataModified;
console.log('resultout' + JSON.stringify(elementinfo,null,2));
});
}
上記のコードでは、workloads.elements は複数の値を含む配列です。しかし、値の 1 つのみのコールバック結果を取得します。