הבטחות

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

תמיכה

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

שימוש

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

אסינכרוני וממתינים

אופרטור ההמתנה משמש להמתנה ל-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. בשלב הזה, הבטחות נתמכות רק בgetPlacePredictions()