2
我想從客戶端獲取地理位置,然後爲每個Ajax加載位置,然後將它們顯示到列表中。嵌套異步函數
我有函數getGeolocation
,loadLocation
和createList
。
getGeolocation
和loadLocation
是異步函數,所以我需要回調或使用延遲對象。我在互聯網上搜索了幾個小時,但我仍然不明白如何處理這個問題的語法。
我知道這將是可以調用的函數success
和loadLocations
在createList
的afterResponse
功能,但我想調用這個函數在幾個地方,所以它不是一個適合我的選擇。
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'];
}
你能解釋一下'我知道這將有可能叫「loadLocations」中的「成功」功能和「afterResponse」函數中的「createList」,但是我想在很多不同的地方調用這個函數,所以它不適合我。需要從許多地方調用哪些方法? –
例如我也有「createMap」函數和一個「showLocation」函數,我想要加載具有相同功能的位置。 – Oachkatzl
所以當你從'createMap()'調用'loadLocations()'時,你不想調用'createList()',它是正確的嗎? –