Javascript / API Blank Решено обещание и неглобальные данные из запроса - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь установить, а затем получить переменную хранения сеанса, которая возвращается из API, который я использую. API возвращает правильные значения, и эти значения доступны в функции, которая возвращает результат и его состояние, но не за пределами запроса. Запрос:

var geom;

var latArray = new Array();

var longArray = new Array();

function getLatLong(placeIdent) {

service = new google.maps.places.PlacesService(document.createElement('div'));

request = {placeId: ""+placeIdent+""};

service.getDetails(request, function(result, status) {

if (status !== google.maps.places.PlacesServiceStatus.OK) {

console.log(status);

} else {

  writeLatLongData(result);

  while(geom != "") {

    lat = geom.lat();
    latArray.push(lat);

    long = geom.lng();
    latArray.push(long);

    console.log(geom);
    console.log(lat);
    console.log(long);

    timeout();

  }

}

}

)

}

function writeLatLongData(result) {

  geom = result.geometry.location;

  return geom;
}

Я знаю, что эта функция является источником проблемы, но если она мне нужна, я пытаюсь получить доступ к сохраненным значениям, например:

   function timeoutOne() {

    setTimeout(function(){ 

    getGeometry(placeArray);

    }, 1000); 

}

timeoutOne();

function getGeometry(placeArray) {

for (var j=0; j < nightsArray.length; j++) {

    getLatLong(placeArray[j]);
}

}

Я почти уверен, что это проблема асинхронности, но я не так хорошо знаком с Async / await, и все, что я пробовал, просто возвращает пустое значение, когда обещание разрешено (возможно, потому, что данные недоступны вне функция запроса, все еще).

У кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 12 сентября 2018

Что если приведенное ниже условие выполняется,

status !== google.maps.places.PlacesServiceStatus.OK

Ваш вызов API Google Места перестает работать (возможно, из-за того, что вы делаете слишком много вызовов в течение 10 секунд), если это произойдет, ничего не будет возвращено, чтов свою очередь, заставляя функцию getLatLong возвращать undefined.

Проверить, возвращает ли хотя бы однажды эту функцию что-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...