将数据传递给数组javascript
Pass data to array javascript
如何为数组返回数据,而不是为函数onSuccess
和onError
返回数据?
function onSuccess(position) {
alert('Latitude: ' + position.coords.latitude + ''n' +
'Longitude: ' + position.coords.longitude + ''n' +
'Altitude: ' + position.coords.altitude + ''n' +
'Accuracy: ' + position.coords.accuracy + ''n' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + ''n' +
'Heading: ' + position.coords.heading + ''n' +
'Speed: ' + position.coords.speed + ''n' +
'Timestamp: ' + position.timestamp + ''n');
}
function onError(error) {
alert('code: ' + error.code + ''n' +
'message: ' + error.message + ''n');
}
navigator.geolocation.watchPosition(onSuccess, onError, { timeout: 30000 });
我需要的例子:
geolocation = navigator.geolocation.watchPosition(null, null, { timeout: 30000 });
if(!geolocation.error)
alert(geolocation.coords.latitude);
插件:https://github.com/apache/cordova-plugin-geolocation
我猜从你的问题,你希望你的代码线性执行。但事实并非如此。执行代码块,然后最终到达位置并调用回调。但是它发生在不同的时间(甚至几毫秒计数)和不同的堆栈跟踪中。这就是异步Javascript的工作原理。
如果你不熟悉这个概念,你应该去读一些关于这个主题的文章。为了供您参考,我已经将您的代码翻译成Promise代码,这是帮助处理异步性的最佳技术之一。
new Promise(function(resolve, reject) {
navigator.geolocation.watchPosition(resolve, reject, { timeout: 30000 });
})
.then(function(location) {
console.log(location.coords.latitude);
})
.catch(function (error) {
console.log('code: ' + error.code + ''n' +
'message: ' + error.message + ''n');
});
顺便说一句,帮你自己一个忙,用console.log
。alert()
是如此的2000年代!:)
相关文章:
- 如何遍历包含对象的数组-javascript
- 保存数组javascript
- 查找数组javascript中包含的元素类型
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 从多维数组javascript中提取特定值
- 如何在数组javascript中选择伪随机值
- 拆分字符串数组(JavaScript)后未定义
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 使用条件for循环更新数组-Javascript
- 从数组javascript创建新对象
- 用数组(javascript)中的值替换regex捕获
- 从数组[Javascript]的总长度中减去一个干净的数字
- 将一个字符串数组解析为一个新的数组javascript
- 如何将对象转换为对象数组javascript
- 赢得't循环数组javascript
- 从不同的数组 JavaScript 中获取值
- 多维数组 JAVASCRIPT 出了点问题
- 可以't分配给一个对象数组javascript
- 比较数组JavaScript中的对象
- 如何完成缺少(连续)元素的数组|Javascript