2012-06-30 68 views
0

我想创建模块(mapview,网络,地理位置等),我面临的异步问题。比如我有geolocation.js:与模块异步问题 - 钛

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(函数(e)中{

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位置是异步的,所以当我使用“return lat + lon”时,我得到null。我试过回调,但他们不能返回getLocation的值。是否有任何通用的方法来管理这个异步函数?

回答

0

是的,你需要一个回调的这种功能:

Titanium.Geolocation.getCurrentPosition(function(p) { 
    alert(JSON.stringify(p)); 
});