Laden von Bildern synchron mit Javascript

9

Ich muss ein Bild synchron laden, das heißt, ich muss die Ausführung von Javascript pausieren, bis das Bild geladen ist. Da image.onload asynchron ist, wird die Hauptfunktion zurückgegeben, bevor das Bild geladen wird.

Ich benutze Leinwand, und wenn die Hauptfunktion zurückkehrt, bevor das Bild geladen und daher gezeichnet wird, werden andere Dinge in der Leinwand vor dem Bild gezeichnet. Dies funktioniert nicht, da die Reihenfolge der Zeichnung auf einer Leinwand sehr wichtig ist!

Hier ist was ich gemacht habe:

%Vor%

Gibt es eine Möglichkeit, dies synchron zu tun oder zu warten, bis das Bild vollständig geladen ist, bevor es von der Funktion zurückkehrt?

    
devongovett 19.07.2009, 12:47
quelle

3 Antworten

2
  

Gibt es einen Weg, dies zu tun?   synchron oder warten bis der   Das Bild ist vor der Rückgabe vollständig geladen   von der Funktion?

Nein. AFAIK, das einzige, was synchron in Javascript getan werden kann, ist ein synchroner XHR-Aufruf.

In jedem Fall sollten Sie eine Hierarchie von Callbacks einrichten, die Ihre Abhängigkeiten implementieren.

    
David-SkyMesh 19.07.2009 12:53
quelle
2

Kann das nicht durch Refactoring gelöst werden?

Wickeln Sie den Code, den Sie nach dem Laden des Bildes in eine vom Callback aufgerufene Funktion ausführen müssen (oder machen Sie diese Funktion zum Callbak).

Ich sehe, dass Sie sagen, dass wenn die Hauptfunktion zurückkehrt, anderer Code ausgeführt wird. Kannst du das auch einwickeln? Können Sie die Ausführung verzögern oder von diesem Onload-Ereignis oder einem anderen Ereignis abhängig machen?

Sie könnten sogar die Quelle des anderen Javascript-Codes im Image-Onload dynamisch laden.

    
Keith Bentrup 19.07.2009 15:07
quelle
0

Ich glaube nicht, dass Sie es asynchron tun können, und ich denke, es wäre sehr riskant, wenn der Pfad zur Bilddatei falsch wäre. Sie müssen berücksichtigen, dass Onload ein Rückruf ist, der aufgerufen wird, wenn das Bild vollständig geladen ist.

Sie müssen also den gesamten Zeichencode in der Callback-Funktion ausführen.

    
Fabien Ménager 19.07.2009 12:54
quelle

Tags und Links