0

我正在尝试创建模块(地图视图、网络、地理位置等),但我面临异步问题。例如,我有 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(function(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”时,我得到空值。我尝试了回调,但他们无法返回 getLocation 的值。有什么通用的方法来管理这个异步函数吗?

4

1 回答 1

0

是的,您需要对这种函数进行回调:

Titanium.Geolocation.getCurrentPosition(function(p) {
    alert(JSON.stringify(p));
});
于 2012-07-02T19:41:53.387 回答