在javascript中同步进行地理位置调用
我正在开发一个基于地理位置的应用程序,因此必须首先获得位置,甚至在执行应用程序的其余部分之前。那么,如何以同步方式转换此模块在javascript中同步进行地理位置调用,javascript,geolocation,Javascript,Geolocation,我正在开发一个基于地理位置的应用程序,因此必须首先获得位置,甚至在执行应用程序的其余部分之前。那么,如何以同步方式转换此模块 var geolocation = (function() { 'use strict'; var geoposition; var options = { maximumAge: 1000, timeout: 15000, enableHighAccuracy: false }; function
var geolocation = (function() {
'use strict';
var geoposition;
var options = {
maximumAge: 1000,
timeout: 15000,
enableHighAccuracy: false
};
function _onSuccess (position) {
console.log('DEVICE POSITION');
console.log('LAT: ' + position.coords.latitude + ' - LON: ' + position.coords.longitude);
geoposition = position
};
function _onError (error) {
console.log(error)
};
function _getLocation () {
navigator.geolocation.getCurrentPosition(
_onSuccess,
_onError,
options
);
}
return {
location: _getLocation
}
}());
多谢各位 我认为你不应该尝试同步进行。只需为地理定位getter实现某种类型的事件系统。通过这种方式,它可以异步工作,但地理位置会初始化需要地理位置的应用程序或组件 下面是一个非常简单的例子,说明了这是如何工作的:
var callbacks = [];
var onGeolocationReady = function (callback) {
callbacks.push(callback);
}
function _onSuccess (position) {
// iterare through each callback and invoce them
}
// and making component
onGeolocationReady(function () {
// some code here which requires geolocation
});
我希望这会有所帮助。地理定位必须保持异步,但您可以通过向模块的主函数传递回调,并在成功函数和错误函数完成处理后分别调用它们来实现:
var geolocation = (function() {
'use strict';
var geoposition;
var options = {
maximumAge: 1000,
timeout: 15000,
enableHighAccuracy: false
};
function _onSuccess (callback, position) {
console.log('DEVICE POSITION');
console.log('LAT: ' + position.coords.latitude + ' - LON: ' + position.coords.longitude);
geoposition = position
callback();
};
function _onError (callback, error) {
console.log(error)
callback();
};
function _getLocation (callback) {
navigator.geolocation.getCurrentPosition(
_onSuccess.bind(this, callback),
_onError.bind(this, callback),
options
);
}
return {
location: _getLocation
}
}());
geolocation.location(function () {
console.log('finished, loading app.');
});
您如何解释“必须保持异步”?为什么呢?我觉得我能理解,但我无法解释。