Асинхронные методы в 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);
-
В настоящее время объекты Promise поддерживаются только в методе
getPlacePredictions()
. ↩