Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Wie asynchroner Request in Funktion verwenden

Frage Entwicklung JavaScript

Mitglied: mabue88

mabue88 (Level 2) - Jetzt verbinden

18.09.2013 um 14:23 Uhr, 1377 Aufrufe, 2 Kommentare

Hallo,

ich nutze den Geocoder von Google um die Koordinaten zu einer Adresse zu erhalten. Der Request erfolgt dabei asynchron. Ich will aber eine Funktion erstellen, der ich die Adresse übergebe und als Antwort dir dazugehörigen Koordinaten erhalten. Hat jemand einen Tipp dafür?

So weit bin ich bis jetzt:
[code]
function KoordinatenInAdresseUmwandeln(adresse) {
var geocoder = new google.maps.Geocoder();

geocoder.geocode({ 'address': adresse }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
koordinaten = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng());
}
else
alert('error: ' + status);
});

return "noch nichts";
}
[/code]
Mitglied: Nobody-Is-Perfect
18.09.2013 um 14:34 Uhr
Hi mabue88,

Du versuchst hier aus dem asynchronen Schema auszubrechen.

Im Normalfall würde man der function einfach das Ziel des Ergebnisses mitteilen, z.B. die ID des DOM - Elements
und in der Ergebnisfunktion "function (results, status) {" das Element suchen und den Wert setzen.
Dann bleibt alles schön asynchron und die Funktion selbst hat keine Rückgabe.

Wenn man jedoch auf die Ausführung warten muss, kann man sich mal unter dem Stichwort "Deferred" bei jQuery schlau machen.


Grüße vom Nobody
Bitte warten ..
Mitglied: colinardo
20.09.2013, aktualisiert um 13:01 Uhr
Hallo mabue88,
du könntest deine "Function" so gestalten um sie an mehreren Stellen in deinem Code zu verwenden:
01.
getCoords = function(adresse, f){ 
02.
	var geocoder = new google.maps.Geocoder(); 
03.
	geocoder.geocode({ 'address': adresse }, function (results, status) { 
04.
		if (status == google.maps.GeocoderStatus.OK) { 
05.
			koordinaten = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng()); 
06.
			f("OK",koordinaten); 
07.
		} else { 
08.
			f("ERROR",status);	 
09.
10.
	}); 
11.
}
Um dann die Koordinaten abzufragen benutzt du folgenden Aufruf welchen du in dein synchrones Schema einbauen kannst.
01.
getCoords("Berlin", function(status,result) { 
02.
	if (status == "OK"){ 
03.
                // die variable 'result' enthält hier die Koordinaten 
04.
	}else{ 
05.
		// die Variable 'result' enthält hier den Fehler;	 
06.
07.
});
Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Router & Routing
gelöst Asynchrones Routing (2)

Frage von ottokarl zum Thema Router & Routing ...

Apache Server
Bad Request (6)

Frage von HacktoxX zum Thema Apache Server ...

Microsoft Office
gelöst EXCEL: WENN Funktion mehrfach verwenden (2)

Frage von sims zum Thema Microsoft Office ...

Windows Server
Windows asynchrone Replikation - Alternative zu DoubleTake und DFS-R

Frage von Der-Phil zum Thema Windows Server ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (21)

Frage von McLion zum Thema Router & Routing ...

Windows Server
Kennwort vergessen bei Hyper vserver 2012r (20)

Frage von jensgebken zum Thema Windows Server ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Festplatten, SSD, Raid
Raidcontroller funktioniert nur, wenn unter Legacy-Boot gestartet wird (13)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...