onInit()

Abo der Init-Emissionen des Dashlet-Handles. Während init sich einmal auflöst, ist onInit ein Stream: Es feuert auch bei der Rich-Client-Neu-Initialisierung und liefert das aufgelöste Init späten Abonnenten nach.

1. Signatur

onInit(listener: (ctx: InitContext, info: InitInfo) => void): () => void;
  • listener — erhält den normalisierten InitContext und ein InitInfo-Metadaten-Objekt.

  • Gibt eine Abmeldefunktion zurück: Rufen Sie sie auf, um den Listener zu entfernen.

2. Die vier InitSource-Werte

info.source sagt, wie die Emission zustande kam:

InitSource Bedeutung

webclientEvent

Das erste akzeptierte onInit-Message auf dem postMessage-Wire.

richClientSelfInit

Der Bridge-Lesevorgang, nachdem window.osClient erschien — Selbst-Initialisierung, kein Host-Event.

richClientCallback

Ein Host-Aufruf des installierten osDashletInit-Globalen (erster Host-Aufruf oder eine spätere Neu-Initialisierung).

standalone

Die Erkennungs-Obergrenze lief ohne Bridge oder Event ab; das Promise und der Listener beobachten beide den Degradationszustand.

3. Semantik

  • Feuert bei der Auflösung. Die erste Auflösung liefert den Kontext an alle onInit-Listener mit dem passenden source.

  • Nachlieferung an späte Abonnenten. Wenn das Init sich bereits aufgelöst hat (zum Beispiel registriert ein Framework seinen Listener erst nach dem Mount), feuert der Listener sofort mit dem aufgelösten Kontext und seiner ursprünglichen Quelle — eine späte Registrierung verpasst das Init niemals.

  • Rich-Client-Neu-Emission. Im Rich Client kann sich das Init erneut auslösen: ein erster osDashletInit-Callback, der nach einer früheren Selbst-Initialisierung eintrifft (oder ein Callback, der den Erkennungs-Poll-Tick überholt), liefert einen frischen Kontext mit source: 'richClientCallback'. Folgende Callbacks laufen stattdessen über onUpdate.

  • Listener-Fehler. Eine von einem onInit-Listener geworfene Ausnahme (normale oder Nachlieferungs-Zustellung) wird an die onError-Listener geroutet — sie bricht nie den Host-Aufruf oder die anderen Listener.

4. Beispiele

const off = dashlet.onInit((ctx, info) => {
    console.log(info.source, ctx.environment);
    render(ctx);
});

// später
off(); // abmelden