Я полагаю (не совсем уверен), что мой код стал немного медленнее после объединения вызовов POST и GET и задавался вопросом, нормально ли это или есть другой более эффективный способ сделать это. Я основываю свое предположение на том факте, что маркер карты Google появляется после небольшой задержки на карте Google. Я считаю, что это потому, что я помещаю только что созданный маркер в массив маркеров: [] в конце цепочек POST и GET.
Изначально мой код выглядел так:
createMarker(event){
axios.post('/marker', {
userId: this.$store.state.auth.userId,
marker: event.latLng
}).then(response => {
this.markers.push({ 'id': response.data.marker.id,
'lat': response.data.marker.lat,
'lng': response.data.marker.lng})
}).catch((error) => console.log(error));
}
Обновленная версия объединяет запрос POST в GET .then()
следующим образом:
createMarker(event){
var lat = event.latLng.lat();
var lng = event.latLng.lng();
const latLng = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + lat + ',' + lng + '&key='
axios.get(latLng)
.then(response => {
const name = response.data.results[0].address_components[5].long_name + ', '
+ response.data.results[0].address_components[3].long_name
console.log(response)
axios.post('/marker', {
userId: this.$store.state.auth.userId,
marker: event.latLng,
name: name
}).then(response => {
this.markers.push({ 'id': response.data.marker.id,
'lat': response.data.marker.lat,
'lng': response.data.marker.lng})
}).catch((error) => console.log(error));
}).catch((error) => console.log(error))
}
Мне нужно объединить методы в цепочку, потому что я хочу использовать giocode api от google, чтобы получить название города на основе значений lat и lng, а затем передать его в мой запрос POST, чтобы я мог сохранить его в своей собственной базе данных.