Ist .html (stuff) synchron oder asynchron?

8

Angenommen, stuff enthält eine beträchtliche Menge html einschließlich eines Elements, das ich in die folgende Zeile füllen möchte:

$("#content").html(stuff);

Kann die folgende Zeile das in stuff definierte Element füllen oder ist es möglich, dass der Code noch läuft?

Wenn der Code beendet ist, ist es immer noch möglich, dass das Element nicht existiert, weil der Browser es noch nicht gerendert hat?

Ich weiß, wenn ich .load (für den ersten Download des Elements) verwende, dass ich einen Callback verwenden muss, aber der Callback, der mit .html () kommt, ist kein do-this- wenn-gemacht-Ding wie sie normalerweise sind, was ist, was mich wirklich verwirrt hat. Angesichts der Ähnlichkeit zwischen .html und .load und dem Wissen, dass .load asynchron ist, sagt mir mein Bauch, dass .html auch sein muss, aber ich kann keinen Hinweis finden. Bitte helfen.

    
SteveC 30.07.2014, 10:42
quelle

1 Antwort

1

Die Antwort ist bereits in den Kommentaren gegeben, aber um es ein wenig zu erklären:

Die html-Methode ruft keinen Callback auf, es ist nur eine Funktion, die das jQuery-Objekt zurückgibt, wenn ein Parameter angegeben wird (oder sonst der HTML-Inhalt).

Sagen Sie zum Beispiel, wenn stuff eine sehr große Zeichenfolge ist, die viel html enthält und das Skript verlangsamt, wartet der Rest des Skripts, bis die HTML-Datei vorhanden ist.

Was Sie gefragt haben, ist sicherlich möglich:

%Vor%

Aber wenn stuff durch ajax mit .load() geladen wird, muss die dritte Zeile im Callback sein, um den Platzhaltertext zu ersetzen, sobald der html vom Server empfangen wurde:

%Vor%

was übrigens nicht mehr als eine Abkürzung ist:

%Vor%     
jazZRo 30.07.2014 11:24
quelle

Tags und Links