0

モジュール(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の値を返すことができません。この非同期関数を管理する一般的な方法はありますか?

4

1 に答える 1

0

はい、この種の関数にはコールバックが必要です。

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