gpt4 book ai didi

html - 地理定位成功回调 - 如何在此回调之外处理返回的对象?

转载 作者:可可西里 更新时间:2023-11-01 13:11:45 25 4
gpt4 key购买 nike

网络上大多数简单的 html5 地理定位示例都是这样的:

if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(success, error);
} else {
//no geolocation
}

function success(position) {
//do things with the position object in here
}

function error (msg) {
//log error codes etc here
}

我不希望在成功回调中包含我的所有逻辑(有很多)。将传递给 success 的对象暴露给父作用域的最佳方式是什么?通过在 success 中以某种方式使用闭包?我不太明白。谢谢

最佳答案

需要回调函数的原因是对 getCurrentPosition 的调用是异步的。因此,虽然您可以将位置公开为“父”范围(调用 getCurrentPosition 的范围)中的变量,但这在调用 getCurrentPosition 的执行线程上没有用,因为这与成功的线程不同功能。例如,这将不起作用:

function parent(){
var position;

function success(p) {
position = p;
}

function error (msg) {
//log error codes etc here
}

navigator.geolocation.getCurrentPosition(success, error);
var longitude = position.coords.longitude; // position is undefined here
}

但是,如果您想将代码分解成更小的 block ,您可以将位置存储在父级范围内的变量中(避免需要传递它),然后将多个函数链接在一起:

function parent(){
var position;

function success(p) {
position = p;
doSomethingWithPosition();
}

function error (msg) {
//log error codes etc here
}

navigator.geolocation.getCurrentPosition(success, error);

function doSomethingWithPosition(){
var longitude = position.coords.longitude; // position is defined here
doSomethingElseWithPosition();
}

function doSomethingElseWithPosition(){
var latitude = position.coords.latitude; // position is defined here
}

}

关于html - 地理定位成功回调 - 如何在此回调之外处理返回的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19591012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com