Я искал ранее отвеченные вопросы, но я думаю, что это эксклюзивный вызов (простите за мой английский).
У меня есть эта функция ниже, которая ожидает возврата от функции сокращения обратного вызова
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
соответственно, но я уверен, что где-то неправильно. Пожалуйста, помогите выяснить, где я ошибаюсь, поскольку я пытаюсь научиться использовать async и ждать в Javascript.