2012-06-30 7 views
0

Я пытаюсь создать модули (mapview, network, geolocations и т. Д.), И я столкнулся с асинхронной проблемой. Например, у меня есть geolocation.js:Асинхронная проблема с модулем - Titanium

exports.getLocation = function(){ 

var lat=""; 
var lon=""; 

// запрашивает у пользователя разрешения на использование текущей службы определения местоположения

Ti.Geolocation.purpose = "Receive User Location"; 

Titanium.Geolocation.accuracy = Titanium.Geolocation.ACCURACY_BEST; 

Titanium.Geolocation.distanceFilter = 10; 

// Получить текущее местоположение (огнь раз)

титана .Geolocation.getCurrentPosition (функция (е) {

if (e.error){ 
        alert('The device cannot get your current location'); 
        return; 
       } 
     var longitude = e.coords.longitude; 
     var latitude = e.coords.latitude; 
     lon = longitude; lat = longitude; 
    }); 

    // I WANT HERE TO RETURN LAT+LON VALUES 
// return lat+lon; 

}

Я хочу позвонить из приложения app.js: var location = require ('/ geolocation'); var latlon = location.getLocation(); , но getCurrent position является асинхронным, поэтому, когда я использую «return lat + lon», я получаю null. Я попробовал обратный вызов, но они не могут вернуть значение для getLocation. Есть ли общий способ управления этими асинхронными функциями?

ответ

0

Да, вам нужен обратный вызов для такого рода функции:

Titanium.Geolocation.getCurrentPosition(function(p) { 
    alert(JSON.stringify(p)); 
}); 
Смежные вопросы