Вход

Просмотр полной версии : return из подфунукции


blax
08.03.2012, 12:18
Есть функция:

function getState(zipcode) {
var state = "N/A";
state = geocoder.geocode( { 'address': zipcode}, function (result, status) {
if (status == google.maps.GeocoderStatus.OK) {
state = result[0]['address_components'][component]['short_name'];
return state;
}
});
}

Тут он, как я понимаю, возвращает в подфункцию
function (result, status) {}

Как мне вернуть state в главной функции?
Так не работает

function getState(zipcode) {
var state = "N/A";
state = geocoder.geocode( { 'address': zipcode}, function (result, status) {
if (status == google.maps.GeocoderStatus.OK) {
state = result[0]['address_components'][component]['short_name'];
}
});
return state;
}

Gvozd
08.03.2012, 12:22
Так не работает
Естественно, ведь во втором примере вы делаете return ДО того, как выполнилась function (result, status) , и на этот момент state еще не был получен с сервера.
Зато вы его прекрасно затерли возвратом функции geocoder.geocode, так как решили использовать такое же имя переменной

blax
08.03.2012, 15:43
Да, эту ошибку уже понял. Спасибо. Но КАК мне вернуть ПОСЛЕ того, как выполниться функция?

blax
08.03.2012, 16:32
Или вот, еще одна такая же трбла:

var postal_code = "";
getLatLng(city1, function(addr){
codeLatLng(addr, function(ZIP){
postal_code = ZIP;
});
});
alert (postal_code);


Как алерт выполнить после функций?
Алерт это просто пример, мне надо дальше работать с переменной postal_code.

Gvozd
08.03.2012, 23:40
blax,
Привыкайте к асинхронному стилю программирования
Если вы хотите работать с переменной вычисляемой в результате выполнений асинхронной функции, то код работающий с ней должен вызыватся колбеке, либо позже

var postal_code = "", work_with_postal_code;
getLatLng(city1, function(addr){
codeLatLng(addr, function(ZIP){
postal_code = ZIP;
work_with_postal_code(postal_code);
});
});
work_with_postal_code = function(postal_code) {
alert (postal_code);
}

blax
09.03.2012, 13:55
Спасибо за классный ответ! Теперь разобрался. Скажу честно, матчасть я вообще не читал, так что часто вот на такой фигне стопарюсь. Все никак руки не дойдут. Может что посоветуете из литературы? Чтобы не совсем для чайников.

Gvozd
10.03.2012, 00:42
Может что посоветуете из литературы?
Вверху сайта есть навигация
Форум Учебник Книги Блоги Стандарт языка Мастер-классы по JavaScript Справочник
Статьи Тест знаний Аналоги функций PHP Песочница JS.Talks Курсы javascript
Материалов для обучения достаточно.
От себя книгу посоветовать не могу, так как учился в разнабой, в частности по статьям с данного сайта. Советую заглянуть в цкил статей про Ajax