【问题标题】:Asychronous issue with module - Titanium模块的异步问题 - Titanium
【发布时间】:2012-06-30 15:53:08
【问题描述】:

我正在尝试创建模块(地图视图、网络、地理位置等),但遇到了异步问题。例如我有 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 的值。有什么通用的方法来管理这个异步函数吗?

【问题讨论】:

    标签: asynchronous titanium commonjs


    【解决方案1】:

    是的,这种函数需要回调:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多