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?
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.
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.
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.
Tags und Links javascript image ajax canvas