我正在尝试创建模块(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的值。是否有任何管理此异步函数的通用方法?
答案 0 :(得分:0)
是的,你需要回调这种功能:
Titanium.Geolocation.getCurrentPosition(function(p) {
alert(JSON.stringify(p));
});