Я использую автозаполнение мест Google и матрицу расстояний, чтобы указать два местоположения и распечатать расстояние между ними.У меня есть два класса javascript es6 для разделения API Google в качестве сервисов.
Моя проблема в том, что я пытаюсь дождаться ответа о получении расстояния от службы матрицы расстояний, а затем записать его на консоль, но при регистрации я получаю неопределенное значение.служба матрицы расстояний возвращает ответ после того, как я его запишу.Это должно означать, что мое ожидание в методе не работает.Что я делаю не так?
distanceMatrix.js
export default class DistanceMatrixService {
constructor(pickup, dropoff, garage){
.....
}
getDistance(arg1, arg2) {
this.distance.getDistanceMatrix({
origins: [arg1],
destinations: [arg2],
travelMode: 'DRIVING',
unitSystem: google.maps.UnitSystem.IMPERIAL
}, response => {
console.log(response) //actually returns desired response
return response.rows[0].elements[0].distance.text}
);
}
main.js
calcButton.addEventListener('click', async (event) => {
event.preventDefault();
const distanceMatrix = new DistanceMatrixService(pickupInfo.formatted_address, dropoffInfo.formatted_address)
const pickup = pickupInfo.formatted_address
const dropoff = dropoffInfo.formatted_address
const ptd = await distanceMatrix.getDistance(pickup, dropoff);
console.log(ptd) // undefined
});
Я ожидаю, что console.log (ptd) будет ожидать distanceMatrix.getDistance () для завершения, но фактические результаты ptd записываются как неопределенные, а затем console.log (response) из матрицы расстояний выходит из системы.Это должно быть наоборот.