הבטחות

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

תמיכה

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

שימוש

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

Async ו-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');
    });

דפוס קריאה חוזרת אסינכרונית

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

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