モジュール(mapview、network、geolocationsなど)を作成しようとしていますが、非同期の問題に直面しています。たとえば、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;
//現在の場所を取得します(1回起動します)
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」を使用するとnullになります。コールバックを試しましたが、getLocationの値を返すことができません。この非同期関数を管理する一般的な方法はありますか?