2017-08-13 19 views
0

イムイムを出力することがないいくつかの理由のための最終的なARR3応答をしようとすると、私のコードはコンソールのプリントではなく、応答

let n = JSON.parse(JSON.stringify(arr2)); 
async.forEachOf(n, function(value, key, cb1) { 
let obj = []; 
async.forEachOf(value.flightDetail.flightDetails, function(v, k, cb2) { 
    let dateTimeInfo = v.flightInformation.productDateTime; 
    let isNextDay = ((dateTimeInfo.dateVariation) ? true : false); 
    let sectorInf = v.flightInformation.location; 
    let flightDetails = {}; 
    flightDetails.eType = v.flightInformation.productDetail.equipmentType; 
    flightDetails.marketingCarrier = v.flightInformation.companyId.marketingCarrier; 
    flightDetails.operatingCarrier = v.flightInformation.companyId.operatingCarrier || v.flightInformation.companyId.marketingCarrier; 
    obj['segment-' + ((k) + 1)] = { 
     departureDate: dateTimeInfo.dateOfDeparture, 
     arrivalDate: dateTimeInfo.dateOfArrival, 
     departureTime: dateTimeInfo.timeOfDeparture, 
     arrivalTime: dateTimeInfo.timeOfArrival, 
     isNextDay: isNextDay, 
     sourceSector: sectorInf[0].locationId, 
     sourceTerminal: sectorInf[0].terminal || "", 
     desitinationSector: sectorInf[1].locationId, 
     desitinationTerminal: sectorInf[1].terminal || "", 
     flightInfo: flightDetails 
    } 
    console.log(JSON.stringify(obj)); **-- This doesn't working** 
    console.log(obj); **-- this does work** 
    cb2(); 
}, function() { 
    arr3.push({ 
     flight: obj, 
     price: value.priceObject 
    }); 
    cb1(); 
    }); 
}, function() { 
callback(); 
}); 

です働いているようだ。しかし、私はそれをコンソール、適切に印刷します。

promise/asyncとは関係がありますか?

+0

jsfiddleを作成できますか? – Ashvin777

+0

非同期呼び出しを行っていますか?なぜ私はasync.forEachOf'を同期的なものの代わりに使用しているのか理解しようとしています。また、特に動作しないのは何ですか? – JohnnyHK

+0

どこに配列を印刷していますか? – marvel308

答えて

0

問題を引き起こしたこのコードの問題は、なぜ起こったのか分かりません。それを簡単な返品明細書に変更することによって、問題が解決されました。

ワーキングサンプル:

let n = _.map(dataArray, function(flightObjectVal) { 
    let flightObj = flightObjectVal.flightDetail.flightDetails; 
    let pricedObj = flightObjectVal.priceObject; 
    return { 
    flight: _.map(flightObj, function(v) { 
     // Incase of flightInformation key is missing in the response object append with one. 
     if (!v.flightInformation) { 
     v.flightInformation = v; 
     } 

     // Date & Time object 
     let dateTimeInfo = v.flightInformation.productDateTime; 

     // Is the flight next day 
     let isNextDay = ((dateTimeInfo.dateVariation) ? true : false); 

     // Flight sector object 
     let sectorInf = v.flightInformation.location; 

     // Define restructured flight detials object 
     let flightDetails = {}; 

     // Flight Equipment type 
     flightDetails.eType = v.flightInformation.productDetail.equipmentType; 

     // Marketing airline code 
     flightDetails.marketingCarrier = v.flightInformation.companyId.marketingCarrier; 

     // Operating airline code 
     flightDetails.operatingCarrier = v.flightInformation.companyId.operatingCarrier || v.flightInformation.companyId.marketingCarrier; 

     //Return the final restructured object 
     return { 
     departureDate: dateTimeInfo.dateOfDeparture, 
     arrivalDate: dateTimeInfo.dateOfArrival, 
     departureTime: dateTimeInfo.timeOfDeparture, 
     arrivalTime: dateTimeInfo.timeOfArrival, 
     isNextDay: isNextDay, 
     sourceSector: sectorInf[0].locationId, 
     sourceTerminal: sectorInf[0].terminal || "", 
     desitinationSector: sectorInf[1].locationId, 
     desitinationTerminal: sectorInf[1].terminal || "", 
     flightInfo: flightDetails 
     } 
    }), 
    pricedObj: pricedObj 
    } 
}); 

私はいくつかのlodashを使用して、リファクタリング、およびasync.forEachOf同期の懸念を指摘しmarvel308に感謝をしました。それは私に全体の論理を再考させました。

関連する問題