Я пытаюсь выяснить, как сохранить этапы возврата обещания в переменные.В этом случае я использую карты Google и геокодер Google, чтобы преобразовать файл адресов JSON в массив объектов lat lng для создания маркеров, но мне все равно любопытно.Это было сделано с помощью одного обещания, но, поскольку я вынужден циклически проходить через данные и выполнять вызов, я не могу вызвать другую функцию и оставить обещание, поскольку в конечном итоге мне придется повторить обещание.Это означает, что мне нужно хранить объект в отдельной переменной.См. Разделы кода ниже.
address.json
{
"address" : "Oosterpark 9",
"city" : "Amsterdam",
"name" : "Onze Lieve Vrouwe Gasthuis"
"zipcode" : "1091 AC"
},
{
"address" : "Jan Tooropstraat 164",
"city" : "Amsterdam",
"name" : "Sint Lucas Andreas Hospital"
"zipcode" : "1061 AE"
}
Map.js
makeMarker(a){
Geocode.setApiKey(this.apiKey);
let arr = [];
for(let i=0; i < a.length; i++){
let address = b[i].address.replace(" ","+") + ',+'+b[i].zipcode.replace(" ","+")+',+'+b[i].city;
arr[i] = Geocode.fromAddress(address).then(
response => {
const {lat, lng} = response.results[0].geometry.location;
console.log(lat, lng);
return {lat: lat, lng: lng};
}
);
}
return arr;
}
В этом случае вышеупомянутая функция вызывается в конструкторе, гдепеременная ожидает определения в результате выполнения функции makeMarker.В этом случае он возвращает только [обещание, обещание], когда он должен вернуть [{lat: __, lng: __,}, {lat: __, lng: __,}].
Я надеюсь услышать некоторые ваши идеи о том, как решить этот вариант использования!