模块的异步问题 - Titanium

时间:2012-06-30 15:53:09

标签: asynchronous titanium commonjs

我正在尝试创建模块(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;

//获取当前位置(开火一次)

Titanium.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的值。是否有任何管理此异步函数的通用方法?

1 个答案:

答案 0 :(得分:0)

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

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