jquery die reihe nach?
Hallo zusammen
sobald "document ready" ist
führe ich ein paar foramtierungsänderungen, sowie verschiebungen von dom elementen durch
Nun hätte ich gerne, dass ich abfragen kann, wenn das ganze zu ende ist.
grund dafür: wenn das internet recht langsam lädt, sieht man als enduser, wie die formatierung sich ändert usw.... daher würde ich das wrapper_div von beginn an ausblenden und wenn die ganzen formatierungen zu ende sind, würde ich das wrapper_div einblenden. nun müsste ich das abfragen
kann man das mit einer async function machen? oder gibt es hierfür eine idee? danke
3 Antworten
Zuerst wäre zu prüfen, ob du überhaupt asynchrone Operationen durchführst. Wenn nicht, genügt es, nach allen Operation eine Funktion wie show aufzurufen (vorausgesetzt, du blendest dein Element via display-Property aus).
Beispiel:
$(document).ready(function() {
// do some operations ...
$("selector for wrapper_div").show();
});
Bei einer asynchronen Operation hingegen solltest du die Callbacks nutzen, die dir die jQuery-Funktion in so einem Fall dann zur Verfügung stellt.
Beispiel:
$(document).ready(function() {
$("selector for some element").hide("slow", () => {
$("selector for wrapper_div").show();
});
});
Schau in die jQuery API-Dokumentation für genaue Informationen zu den von dir verwendeten Methoden.
Ich würde dir empfehlen das ganze mit reinem JavaScript zu machen. Dir stehen eine reihe von Funktionen zur Verfügung um jQuery zu ersetzen.
Meine Empfehlung für natives JavaScript und jQuery. Frage ab ob das Dokument geladen wurde und erstelle das entsprechende Element und füge es hinzu(DOM-Manipulation). Denn wenn du ein Element das zwar ausgeblendet trotzdem am anfang lädst, bringt der Vorteil mit dem Ausblenden garnicht viel.
Du könntest eine Promise-basierte Lösung verwenden oder eine Callback-Funktion nach Abschluss der Formatierungen aufrufen. Async/await kann auch funktionieren, wenn deine Formatierungsfunktionen Promises zurückgeben. So kannst du den Code zum Einblenden des `wrapper_div` erst nach deren Erfüllung ausführen.
meinst du so:
async function meineFormatierung(){
//hier der code
}
meineFormatierung().then(
function(value) {//formatierung ist nun abgeschlossen, mach nun den rest}
);
Fast :
vielleicht so :
async function meineFormatierung() {
// Hier der Formatierungscode
}
async function main() {
await meineFormatierung();
// Hier den Code, der nach der Formatierung ausgeführt werden soll
}
main();
Kleine Empfehlung noch -> kannst sowas auch auf stackoverflow fragen oder suchen ist vielleicht bei den Antworten besser
muss die meineFormatierung() function ein return beinhalten?
Naja... Ich verwende großteils immer das fallback bei fadein, animation usw. Aber bei css umstyling gibt es keines,oder finde ich das nur nicht?