我有这个模块,它包装了对异步方法的调用,以观察浏览器地理位置的变化navigator.geolocation.watchPosition
var geo_value;
//Initialises the devices geolocation
navigator.geolocation.watchPosition(function (position) {
geo_value = position.coords.longitude + "," + position.coords.latitude;
});
每次watchPosition
方法调用触发时,我都会将值存储在一个变量中,以便currentPosition
在任何给定时间为我提供对 的编程访问。
这一切都很好,但是我现在想currentPosition
通过我从模块中导出的自定义异步方法来公开它。
define(["global"], function (window) {
var navigator = window.navigator;
var geo_value;
//Initialises the devices geolocation
navigator.geolocation.watchPosition(function (position) {
geo_value = position.coords.longitude + "," + position.coords.latitude;
});
return {
currentPosition: function (callback) {
setTimeout(function () {
while (!geo_value) {
//keep looping until geo_value has been initially set by the watch position above
}
//geo_value has been set, execute callback
callback(geo_value);
}, 0);
}
};
});
我已经module
公开了currentPosition
,如果geo_value
已经设置了它就可以工作,但我也希望它在geo_value
尚未设置的情况下异步等待,然后在watchPosition
最终设置geo_value
. 我尝试使用该setTimeout
函数尝试使其异步,但它不起作用。
请任何帮助将不胜感激。