gpt4 book ai didi

jquery - 嵌套异步函数

转载 作者:行者123 更新时间:2023-12-01 05:58:55 24 4
gpt4 key购买 nike

我想从客户端获取地理位置,然后加载每个 Ajax 的位置,然后将它们显示到列表中。

我有函数 getGeolocationloadLocationcreateList

getGeolocationloadLocation 是异步函数,因此我需要回调或使用延迟对象。我在互联网上搜索了几个小时,但我仍然不明白如何处理这个问题的语法。

我知道可以在 success 函数中调用 loadLocations 并在 afterResponse 函数中调用 createList但我想在几个地方调用这个函数,所以它不适合我。

var lat = 0;
var long = 0;
var locations;

getGeolocation();
loadLocations();
createList();

$('#map').live("pageshow", function() {
google.maps.event.trigger(map, 'resize');
});

function getGeolocation(){
console.log("getGeolocation");
if (navigator.geolocation) {

// getCurrentPosition ruft die Funktion success auf und übermittelt die Position Werte
// error wird ausgeführt wenn es einen Fehler beim ermitteln der Position gibt
navigator.geolocation.getCurrentPosition(success, error);
} else {
alert("GeoLocation API ist NICHT verfügbar!");
}

}

function success(position) {
console.log("success");
lat = position.coords.latitude;
long = position.coords.longitude;
}

function error(msg) {
console.log(typeof msg == 'string' ? msg : "error");
}


function loadLocations(){
console.log("loadLocations");
return $.ajax({
type: "GET",
url: "http://www.example.at/api/getLocationsByGeodata_JSON",
success: afterResponse,
/*beforeSend: showPreloader,*/
data: {lat : lat, long: long},
dataType: 'json'
});
}

function afterResponse(response_objekt) {
console.log("afterResponse");
console.log(response_objekt['results']);
locations = response_objekt['results'];
}

最佳答案

我认为你可以使用回调函数来实现这一点

例如:

var lat = 0;
var long = 0;
var locations;

getGeolocation(function(){
loadLocations().done(function(){
createList();
});
});

$('#map').live("pageshow", function() {
google.maps.event.trigger(map, 'resize');
});

function getGeolocation(successCallback){
console.log("getGeolocation");
if (navigator.geolocation) {

// getCurrentPosition ruft die Funktion success auf und übermittelt die Position Werte
// error wird ausgeführt wenn es einen Fehler beim ermitteln der Position gibt
navigator.geolocation.getCurrentPosition(getCurrentPositionCallback(successCallback), error);
} else {
alert("GeoLocation API ist NICHT verfügbar!");
}

}

function getCurrentPositionCallback(callback){
return function (position) {
console.log("success");

if(typeof callback == 'function'){
callback(position);
}

lat = position.coords.latitude;
long = position.coords.longitude;
};
}

function error(msg) {
console.log(typeof msg == 'string' ? msg : "error");
}


function loadLocations(){
console.log("loadLocations");
return $.ajax({
type: "GET",
url: "http://www.example.at/api/getLocationsByGeodata_JSON",
success: afterResponse,
/*beforeSend: showPreloader,*/
data: {lat : lat, long: long},
dataType: 'json'
});
}

function afterResponse(response_objekt) {
console.log("afterResponse");
console.log(response_objekt['results']);
locations = response_objekt['results'];
}

关于jquery - 嵌套异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13011315/

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