Hallo zusammen,
ich weiß ich bin grundsätzlich im falschen Forum. Aber es gibt ja immerhin die Kategorie javaScirpt und hier wurde mir im Bereich java schon oft geholfen.
Deswegen hätte ich es einach versucht.
Mein Problem ist folgendes: synchrone xmlhttprequests sind ja deprecated. Ich komme aber an der ein oder anderen Stelle nicht darum herum, dass das scirpt/der Browser warten muss, bis Daten vom server fertig geladen sind. Ich habe wirklich schon Stunden im Netz verbracht und Alternativen gesucht (fetch, await, callback...) aber ich bekomme keine Lösung für mich passend umgesetzt. Ich wäre dankbar, wenn mir jemand bei meinem konkreten Problem helfen könnte.
Was möchte ich machen: ich habe eine funktion, die im Ablauf z.B.: einen Kunden benötigt, den ich vom Server laden möchte. Damit das Scirpt etwas aufgeräumt ist, hätte ich das laden in eine eigene Funktion gpackt und mir den Kunden als objekt geladen. also:
[CODE lang="javascript" title="funktion"]function tuEtwas() {
//...
//jetzt brauche ich den Kunden
let kunde = ladeKunde(kundennummer);
//jetzt mit den Kunendaten arbeiten
//...
}
function ladeKunde(kundennummer) {
let request = new XMLHttpRequest();
request.onload = () => {
if (request.status === 200) {
kunde = JSON.parse(request.responseText);
return kunde;
} else {
console.log("ergebnis konnte nicht geladen werden: " + request.responseText);
window.alert("Ergebnis konnte nicht geladen werden");
}
}
request.open("GET", "/url" + kundennummer);
request.send();
}[/CODE]
Problem ist jetzt natürlich, dass das synchron problemlos klappt. Asynchron meckert der Browser, das kunde undefined ist - weil eben schon weiter gemacht wird, bevor der requst zurück gekommen ist.
Mit jQuery bekomme ich das aktuell hin - aber ich glaube dass auch bei jQuery die async Funktion deprecated ist, oder?
Es muss doch hier eine Möglichkeit geben, dass so oder so ähnlich hin zu bekommen, oder?
Ich bin wirklich sehr dankbar für eure Hile - wie gesagt, bin seit Stunden / Tagen am suche nach einer Lösung für dieses - wie ich finde - doch einfaches Problem.
ich denke ist stell mich einfach nur zu blöd an :-(
Nachtrag: Ich nutze eingentlich kein jQuery und würde deswegen lieber bei originärem Javasript bleiben.
Wenn es mit jQuery aber eine "nachhaltige" Lösung gibt, gerne auch so.
vg
malt1981
ich weiß ich bin grundsätzlich im falschen Forum. Aber es gibt ja immerhin die Kategorie javaScirpt und hier wurde mir im Bereich java schon oft geholfen.
Deswegen hätte ich es einach versucht.
Mein Problem ist folgendes: synchrone xmlhttprequests sind ja deprecated. Ich komme aber an der ein oder anderen Stelle nicht darum herum, dass das scirpt/der Browser warten muss, bis Daten vom server fertig geladen sind. Ich habe wirklich schon Stunden im Netz verbracht und Alternativen gesucht (fetch, await, callback...) aber ich bekomme keine Lösung für mich passend umgesetzt. Ich wäre dankbar, wenn mir jemand bei meinem konkreten Problem helfen könnte.
Was möchte ich machen: ich habe eine funktion, die im Ablauf z.B.: einen Kunden benötigt, den ich vom Server laden möchte. Damit das Scirpt etwas aufgeräumt ist, hätte ich das laden in eine eigene Funktion gpackt und mir den Kunden als objekt geladen. also:
[CODE lang="javascript" title="funktion"]function tuEtwas() {
//...
//jetzt brauche ich den Kunden
let kunde = ladeKunde(kundennummer);
//jetzt mit den Kunendaten arbeiten
//...
}
function ladeKunde(kundennummer) {
let request = new XMLHttpRequest();
request.onload = () => {
if (request.status === 200) {
kunde = JSON.parse(request.responseText);
return kunde;
} else {
console.log("ergebnis konnte nicht geladen werden: " + request.responseText);
window.alert("Ergebnis konnte nicht geladen werden");
}
}
request.open("GET", "/url" + kundennummer);
request.send();
}[/CODE]
Problem ist jetzt natürlich, dass das synchron problemlos klappt. Asynchron meckert der Browser, das kunde undefined ist - weil eben schon weiter gemacht wird, bevor der requst zurück gekommen ist.
Mit jQuery bekomme ich das aktuell hin - aber ich glaube dass auch bei jQuery die async Funktion deprecated ist, oder?
Es muss doch hier eine Möglichkeit geben, dass so oder so ähnlich hin zu bekommen, oder?
Ich bin wirklich sehr dankbar für eure Hile - wie gesagt, bin seit Stunden / Tagen am suche nach einer Lösung für dieses - wie ich finde - doch einfaches Problem.
ich denke ist stell mich einfach nur zu blöd an :-(
Nachtrag: Ich nutze eingentlich kein jQuery und würde deswegen lieber bei originärem Javasript bleiben.
Wenn es mit jQuery aber eine "nachhaltige" Lösung gibt, gerne auch so.
vg
malt1981