Объекты Promise

Асинхронные методы в Google Maps JavaScript API возвращают объекты Promise.

Поддержка

API Методы возвращают объекты Promise
Directions Да
Distance Matrix Да
Elevation Да
Geocoder Да
Maximum Zoom Imagery Да
Places Нет
Places AutocompleteService Частично1
Streetview Да

Использование

Выполнение асинхронных вызовов методов с помощью Google Maps JavaScript API описывается в руководстве по использованию объектов Promise и иллюстрируется приведенными ниже примерами.

Функция async и оператор await

Оператор await используется для ожидания объекта Promise. Его можно использовать только в функции async.

const app = async () => {
  const elevationService = google.maps.ElevationService();
  const locations = [{lat: 27.986065, lng:86.922623}];

  const response = await elevationService.getElevationForLocation({locations});
  console.log(response.results);
};

app();

Методы then, catch и finally

У объекта Promise есть методы then, catch и finally, которые принимают функции обратного вызова.

const elevationService = google.maps.ElevationService();
const locations = [{lat: 27.986065, lng:86.922623}];

const promise = elevationService.getElevationForLocation({locations});

promise
    .then((response) => {
      console.log(response.results);
    })
    .catch((error) => {
      console.log(error);
    });
    .finally(() => {
      console.log('done');
    });

Шаблон асинхронного обратного вызова

Шаблон обратного вызова допускается и поддерживается.

const elevationService = google.maps.ElevationService();
const locations = [{lat: 27.986065, lng:86.922623}];

const callback = (results, status) => {
  if (status === 'OK') {
    console.log(results);
  } else {
    // handle this case
  }
};

elevationService.getElevationForLocation({locations}, callback);

  1. В настоящее время объекты Promise поддерживаются только в методе getPlacePredictions()