我已经搜索了以前回答过的问题,但我认为这是一个独家挑战(请原谅我的英语)。
我在下面有这个函数,期望从回调减少函数返回
const { getTrips } = require('api');
const { getDriver } = require('api')
const { getVehicle } = require('api')
/**
* This function should return the data for drivers in the specified format
*
* Question 4
*
* @returns {any} Driver report data
*/
let trips = await getTrips().then(data => {
return data.filter(item => item.billedAmount = parseFloat(item.billedAmount.toString().replace(',', '')), 10)
})
async function driverReport() {
// Your code goes here
let getId = trips.reduce((acc, cur)=>{
acc[cur.driverID] ? acc[cur.driverID] = acc[cur.driverID] + 1 : acc[cur.driverID] = 1
return acc
}, {})
let mapId = Object.keys(getId)
// console.log(mapId)
let result = await mapId.reduce(getReport, {})
console.log(result)//undefined
}
回调函数如下
async function getReport(acc, cur){
acc = await acc
// console.log(acc)
let singleTrip = trips.filter(item => item.driverID == cur)
// console.log(singleTrip)
if(singleTrip){
return getDriver(cur).then( async data => {
let { name, phone, vehicleID } = data
acc['fullName'] = name
acc['id'] = cur
acc['phone'] = phone
acc['noOfTrips'] = singleTrip.length
acc['noOfVehicle'] = vehicleID.length
return acc
}).catch(err =>{
if(err){
console.log ('wait')
}
})
}
return acc
}
回调函数正常工作,但没有将值返回到上面的结果变量。
我已经彻底检查并确认我使用return得当,但我肯定在某个地方弄错了。请帮助找出哪里出错了,因为我正试图掌握在 Javascript 中使用 async 和 await 的窍门。
杨魅力
GCT1015
相关分类