Hi
Ich habe folgende Funktion, die ein POST Request an blah.php schickt und bei Antwort etwas macht.
Die echte Funktion ist natürlich um einiges grösser.
Nun ist es so, dass ich die Funktion von aussen aufrufe und zwingend wissen muss wann sie fertig ist. Etwa so:
Mir fallen unschöne Konstrukte ein, wo ich im done-Teil des Post-Aufrufs eine Variable setze und dann in meiner zweiten Funktion immer wieder auf diese Variable prüfe bis diese richtig gesetzt ist. Irgendwie so:
Ich denke, das mit dem Interval ist am schönsten (Allerdings noch nicht getestet ob es überhaupt so funktioniert). Aber gibt es dafür wirklich keine schönere Variante?
Javascript:
function test() {
$.post("blah.php", { ID: "blah" }).done(function(data) {
doSomethingAfterAnswer();
}
}
Die echte Funktion ist natürlich um einiges grösser.
Nun ist es so, dass ich die Funktion von aussen aufrufe und zwingend wissen muss wann sie fertig ist. Etwa so:
Javascript:
function myStuff() {
test();
//Mach folgendes erst wenn alle POST Requests in test durch sind
doStuff();
}
Mir fallen unschöne Konstrukte ein, wo ich im done-Teil des Post-Aufrufs eine Variable setze und dann in meiner zweiten Funktion immer wieder auf diese Variable prüfe bis diese richtig gesetzt ist. Irgendwie so:
Javascript:
postdone=true:
function test() {
postdone=false;
$.post("blah.php", { ID: "blah" }).done(function(data) {
doSomethingAfterAnswer();
postdone=true;
}
}
function myStuff() {
test();
while(!postdone) {
//doNothing -> Wie reagiert ein Browser bei so einer Schleife? Eine Sleep-Funktion gibt es in JS ja nicht
}
doStuff();
}
//oder mit setInterval prüfen?
intervalId=0;
function myStuff() {
test();
intervalId = window.setInterval("readyToDoStuff()", 1000);
}
function readyToDoStuff() {
if(postdone) {
doStuff();
window.clearInterval(intervalId);
}
}
Ich denke, das mit dem Interval ist am schönsten (Allerdings noch nicht getestet ob es überhaupt so funktioniert). Aber gibt es dafür wirklich keine schönere Variante?