Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Анонимные функции (https://javascript.ru/forum/misc/60492-anonimnye-funkcii.html)

lump1k 03.01.2016 17:25

Анонимные функции
 
function getAddress(position) {
        var address;

        var geocoder = new google.maps.Geocoder();
        var latLng = new google.maps.LatLng(position.lat, position.lng);

        geocoder.geocode({'latLng': latLng}, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                address = {
                    district: results[4].address_components[0].long_name,
                    city: results[1].address_components[0].long_name,
                    street: results[0].address_components[1].long_name,
                    houseNumber: results[0].address_components[0].long_name,
                    postalCode: results[2].address_components[0].long_name
                };
            } else {
                address = 'Geocoder failed due to: ' + status;
            }
        });

        return address;
    }


Всем привет. Подскажите пожалуйстка: как сделать так, чтобы моя функция возвращала то, что произошло в середине функции, которая в свою очередь является вторым параметром функции geocoder.geocode?
На деле возвращается то, что я указываю в начале при обьявлении переменной address.

googlecallback 03.01.2016 19:13

Цитата:

Сообщение от lump1k
то, что произошло в середине

У Вас же в середине ф-ции просто передается кофигурация. Вам надо объект этот вернуть? Собственно вернуть на стек не получится, можно "вернуть" в коллбек, например
afterConfig = function(address){
   dealWith(address)
}
function getAddress(position, afterConfig) {
        var address;
 
        var geocoder = new google.maps.Geocoder();
        var latLng = new google.maps.LatLng(position.lat, position.lng);
 
        geocoder.geocode({'latLng': latLng}, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                address = {
                    district: results[4].address_components[0].long_name,
                    city: results[1].address_components[0].long_name,
                    street: results[0].address_components[1].long_name,
                    houseNumber: results[0].address_components[0].long_name,
                    postalCode: results[2].address_components[0].long_name
                };
            } else {
                address = 'Geocoder failed due to: ' + status;
            }
             afterConfig(address)
        });
 
    }

getAddress(myPosition, afterConfig)

googlecallback 03.01.2016 19:15

И да, анонимные ф-ции тут не при чем.

lump1k 04.01.2016 00:25

так и сделал, спасибо

Bigmack 24.05.2016 16:45

Ну можешь, как вариант, зайти через сайт http://advanced.name/ru и попробовать )))


Часовой пояс GMT +3, время: 00:53.