Вполне естественно, что мои цепочечные вызовы POST и GET становятся медленнее?

String s1="Java";
String s2="Java";
My question is whether these two references point to the same memory location  

Dumb citing §3.10.5 Спецификации языка Java :

Строковый литерал является ссылкой на экземпляр класса String ( §4.3.1 , §4.3.3 ).

Кроме того, строковый литерал всегда ссылается на тот же экземпляр класса String. Это связано с тем, что строковые литералы, или, в более общем смысле, строки, которые являются значениями константных выражений ( §15.28 ), «интернированы», чтобы обмениваться уникальными экземплярами, используя метод String.intern.

blockquote>

И прочитайте комментарии к примеру кода там:

Этот пример иллюстрирует шесть пунктов:

  • Литеральные строки в одном и том же класс (§8) в том же пакете (§7) представляют ссылки на один и тот же объект String (§4.3.1).
  • Литеральные строки в разных классах в одном пакете представляют ссылки на один и тот же объект String .
  • Литеральные строки в разных классах в разных пакетах также представляют ссылки на один и тот же объект String.
  • Строки, вычисленные с помощью константных выражений (§15.28), вычисляются во время компиляции, а затем обрабатываются как если они были литералами.
  • Строки, вычисленные путем конкатенации во время выполнения, вновь создаются и, следовательно, различны.
  • Результат явно interni ng вычисленная строка является той же строкой, что и любая ранее существовавшая буквальная строка с тем же содержимым.
blockquote>
0
задан Bobimaru 17 January 2019 в 08:13
поделиться

1 ответ

Если для отображения маркера на карте не требуется id, попробуйте следующее:

Добавьте маркер с пустым id перед вызовами GET / POST. Таким образом, не должно быть никаких задержек.

И обновите значение id после завершения вызовов POST.

Проверьте комментарии в коде

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='

    // add the marker to the map first
    this.markers.push({ 'id':  '',
                        'lat': lat,
                        'lng': lng})
    // save the position of the marker, so we can add `id` later
    var index = this.markers.length - 1;

    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 => {
                // update marker index
                this.markers[index].id = response
            }).catch((error) => console.log(error));
        }).catch((error) => console.log(error))
0
ответ дан ljubadr 17 January 2019 в 08:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: