асинхронное программирование

Тема в разделе "JavaScript", создана пользователем droit74, 18 фев 2014.

Модераторы: ZiX
  1. droit74

    droit74 Постоялец

    Регистр.:
    20 сен 2009
    Сообщения:
    55
    Симпатии:
    0
    есть кусок кода
    Код:
        
    var t1 = ymaps.geocode("уфа").then(function (res) {
            Coords = res.geoObjects.get(0).geometry.getCoordinates();
    });
    
    как мне из внутренний функции вывести Coords
     
  2. mcdir

    mcdir

    Регистр.:
    6 ноя 2007
    Сообщения:
    202
    Симпатии:
    37
    Код:
    var t1 = ymaps.geocode("уфа").then(function (res) {
    Coords = res.geoObjects.get(0).geometry.getCoordinates();
    alert(Coords);
    });
    ?
     
  3. droit74

    droit74 Постоялец

    Регистр.:
    20 сен 2009
    Сообщения:
    55
    Симпатии:
    0
    нужно чтобы он ее возвращал. что бы за пределами скобок к ней обратиться а не в них
     
  4. mcdir

    mcdir

    Регистр.:
    6 ноя 2007
    Сообщения:
    202
    Симпатии:
    37
    Код:
    var  mojUnikanayOchenDlinnajaLj1='';
    var t1 = ymaps.geocode("уфа").then(function (res) {
    Coords = res.geoObjects.get(0).geometry.getCoordinates();
    mojUnikanayOchenDlinnajaLj1=Coords;
    });
    ?
     
  5. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    напишите способ вызова функции и саму функцию
     
  6. mcdir

    mcdir

    Регистр.:
    6 ноя 2007
    Сообщения:
    202
    Симпатии:
    37
     
    Vishez нравится это.
  7. droit74

    droit74 Постоялец

    Регистр.:
    20 сен 2009
    Сообщения:
    55
    Симпатии:
    0
    Код:
    function init(gorod1) {
    var Coords;
        var myMap = new ymaps.Map("map", {
                center: [55.745508, 37.435225],
                zoom: 13
        });
    //делает декодирование 
        var t1 = ymaps.geocode(gorod1).then(function (res) {
            //возвращает координаты  
            Coords = res.geoObjects.get(0).geometry.getCoordinates();
            //alert (Coords);
            //Coords ее нужно вернуть или есть другой способ?
        });
    }
    Coords ее нужно вернуть или есть другой способ ей воспользоваться в коде?

    и если написать
    Код:
    var per;
    function init(gorod1) {
    var Coords;
        var myMap = new ymaps.Map("map", {
                center: [55.745508, 37.435225],
                zoom: 13
        });
        var t1 = ymaps.geocode(gorod1).then(function (res) {
            Coords = res.geoObjects.get(0).geometry.getCoordinates();
           
            per = Coords вот эта переменная
        });
    return  per;
    }
    он ее тоже не возвращает
     
    Последнее редактирование модератором: 20 фев 2014
  8. Vishez

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    169
    Симпатии:
    81
    mcdir дал исчерпывающие ссылки, но можно сделать так(наверное)

    Код:
    
    var obj1 = new Object();  
    
    var t1 = ymaps.geocode("уфа").then(function (res) {
    Coords = res.geoObjects.get(0).geometry.getCoordinates();
    obj1.test = coords;
    });
    
    
    alert(obj1.test); //здесь хранится coords
    
    
    Естественно чтобы свойство test появилось функция в then() должна выполниться.
     
  9. droit74

    droit74 Постоялец

    Регистр.:
    20 сен 2009
    Сообщения:
    55
    Симпатии:
    0
    Код:
    $.when(init(эта функция)).then(function(){alert(obj1.test)});
    и он все ровно не возвращает значения. сначала алерт делает потом функция. если второй раз ее запускаю то выводит предыдущие значение.
     
  10. Vishez

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    169
    Симпатии:
    81
    Все работает, вот пример
    http://jsfiddle.net/6aLp2/