Ich habe folgendes
%Vor%Ich habe eine Funktion, die etwas Ajax ausführt, und gibt dann wahr oder falsch zurück, abhängig davon, ob der Ajax erfolgreich war oder nicht. Diese Ajax-Funktion rufe ich von mehreren Stellen in meinem Code auf.
Da die Funktion endet, bevor der Ajax endet, gibt sie immer false zurück. Wie vermeide ich das?
Ich habe etwas gelesen, was darauf hindeutet, dass ich ein return $.ajax()
in meiner Funktion mache und dann die Funktionen .done()
und .fail()
in meine Funktionen doSomething()
und doSomethingElse()
verschiebe. In meiner .done()
-Methode mache ich jedoch einen BUNCH der Berechnung. Viel Code. Das Problem ist also, dass wenn ich die Funktion .done()
auf meine anderen Funktionen verschiebe, ich eine Menge Code vervielfältige.
Wie vermeide ich das? Wickeln Sie einfach die Berechnung in ihre eigene Funktion und rufen Sie sie wo nötig auf?
Techincally können Sie Ajax synchronous
wie folgt machen:
Aber das wird nicht empfohlen (nur für wirklich wirklich spezifische Dinge).
Andernfalls verwenden Sie einfach callbacks
, wie Sie in diesem Beispiel sehen können:
Lesen Sie mehr hier .
Es wird nicht funktionieren, während sich Ihr Ajax im asynchronen Modus befindet ( async: false
). Versuchen Sie, Ihren Code auf diese Weise zu strukturieren:
Damit bleibt Ihr Hauptrechenblock doABuncnchOfComputation()
intakt und für jede asynchrone Operation zugänglich.
Wenn Sie den Ajax-Modus auf synchron einstellen, wird der Browser von einer beliebigen Ausführung an gehalten, während die Netzwerkübertragung im aktiven Zustand ist. Aufgrund möglicher Netzwerkinstabilität kann dies zu einer "schlechten" Benutzererfahrung führen - der Browser kann hängen bleiben, die Seite ist inaktiv und reagiert nicht, während Ajax sendet / empfängt oder auf Daten wartet. Es ist höchst unzuverlässig und entmutigend.
Tags und Links javascript jquery ajax