התחייבויות

שיטות אסינכרוניות ב-Google Maps JavaScript API מחזירות Promises.

תמיכה

API השיטות מחזירות הבטחות
מסלול כן
‫Distance Matrix כן
גובה כן
Geocoder כן
תמונות עם זום מקסימלי כן
מקומות לא
‫Places AutocompleteService באופן חלקי1
Streetview כן

שימוש

במדריך הזה מוסבר איך להשתמש ב-Promises או בדוגמאות שבהמשך כדי לבצע קריאות אסינכרוניות למתודות באמצעות Google Maps JavaScript API.

‫Async ו-await

אופרטור await משמש להמתנה ל-Promise. אפשר להשתמש בו רק בתוך פונקציה אסינכרונית.

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();

אחר כך תופסים, ולבסוף

לאובייקט 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');
    });

תבנית של קריאה חוזרת אסינכרונית

תבנית הקריאה החוזרת (callback) עדיין תקפה ונתמכת.

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. בשלב הזה, יש תמיכה ב-Promises רק בשפות הבאות: getPlacePredictions(). ↩